使用模型为:
public function details()
{
return $this->hasOne(UserDetails::class, 'user_id', 'id');
}
首先,我创建用户模型:
$user = User::create([
'email' => $request->inn,
'password' => Hash::make($request->password),
]);
然后我尝试分配用户详细信息:
$user->details()->create($user_details);
它向我返回此错误:
在null上调用成员函数details()
答案 0 :(得分:2)
您没有提供有关此问题的大量信息,但是我建议该问题是未创建用户,因为保护了用户模型上的属性。
确保您的用户模型具有以下解决方案之一
protected $fillable = [
'email',
'password'
]
或
protected $guarded = []
未添加这些内容意味着Laravel将不允许您使用save()
方法以外的任何方法向模型添加细节
答案 1 :(得分:1)
两种解决方案。
如果您使用的是create方法,则不会像现在那样创建对象。
$userid = User::create([
'email' => $request->inn,
'password' => Hash::make($request->password),
])->id;
User::find($userid)->details()->create($user_details);
您的问题 $ user 没有得到对象,这就是您得到此错误的原因。
$user = new User;
$user->email = $request->inn;
$user->password= Hash::make($request->password);
$user->save();
//here $user is an instance of User so if you dd($user) you'll get an object.
$user->details()->create($user_details);
希望这对您有用。