Laravel 5:保存相关模型时没有外键

时间:2016-03-01 21:58:37

标签: php laravel-5

我在用户和个人资料之间有一个简单的一对一关系,我正在尝试创建一个用户并一次性使用外键保存他们的个人资料,避免必须传递主键并做两个save()来电。

Laravel将尝试插入相应的Profile值,而id不会指向用户。我做错了什么?

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('App\Profile');
    }
}


class Profile extends Model
{
    protected $table = 'user_profile';

    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

class UserController extends Controller
{

  public function create(Request $request)
  {

    $this->validate($request, [
    ...
    ]) ;

    $user = new User() ;
    $profile = new Profile() ;

    $user->name = $request->input('name') ; 
    ...

    $profile->first_name = $request->input('first_name') ;
    $profile->last_name = $request->input('last_name') ;
    ...

    $user->profile()->save($profile) ;
    // $profile->user()->save($user) ; // doesn't work

    // $profile->user()->associate($user) ; // doesn't work
    // $profile->save() ;    
  }
}

2 个答案:

答案 0 :(得分:1)

首先需要保存用户

$user = new User;

$user->name = $request->input('name') ; 

$user->save();

$profile = new Profile;

$profile->first_name = $request->input('first_name') ;

$user->profile()->save($profile);

答案 1 :(得分:-1)

您正在寻找的功能名称是“关联”

$user->profile()->associate($profile);

$user->save();