我在用户和个人资料之间有一个简单的一对一关系,我正在尝试创建一个用户并一次性使用外键保存他们的个人资料,避免必须传递主键并做两个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() ;
}
}
答案 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();