2015-05-07 7 views
0

Я использую регистрационную форму, которая позволяет заполнять данные из двух разных связанных моделей User и UserProfile, затем эти данные необходимо вставить в базу данных, все данные принадлежат новой записи, In другими словами у меня есть новый User и новый UserProfile в базе данных.Вставить родственную модель в laravel 5

Не знаю, как вставить UserProfile, используя соответствующие модели после вставки нового User.

Вот User модель:

class User extends Model implements AuthenticatableContract, CanResetPasswordContract { 

    use Authenticatable, CanResetPassword; 

    protected $fillable = ['first_name', 'last_name','email', 'password']; 

    protected $hidden = ['password', 'remember_token']; 

    public function getFullNameAttribute(){ 
     return $this->first_name . ' ' . $this->last_name; 
    } 

    public function profile() { 
     return $this->hasOne('App\UserProfile'); 
    } 

} 

Здесь UserProfile модель:

class UserProfile extends Model { 

    protected $fillable = ['bio', 'twitter', 'website', 'birthdate']; 

    public function getAgeAttribute(){ 
     return \Carbon\Carbon::parse($this->birthdate)->age; 
    } 

} 

И вот что я пытаюсь сделать, но я не могу получить его:

public function postNew(){ 
     $params = Request::all(); 

     $user = new User(); 
     $user->fill($params); 
     $user->save(); 

     $user->profile->save(new UserProfile($params)); //line 47 
    } 

Когда я попытался запустить postNew() метод, laravel дать мне эту ошибку:

FatalErrorException in UserController.php line 47: 
Call to a member function save() on null 
+0

Возможный дубликат [Сохранение связанных записей в laravel] (http://stackoverflow.com/questions/23228694/saving-related-records-in-laravel) –

ответ

0

Используйте $ user-> profile() -> save (новый UserProfile ($ params));