我有User
模型和UserInfo
模型。他们是一对一的关系。
当用户注册时,他会在一个很大的表格中填写更多信息。它包含在user_info
表中,由UserInfo
模型表示。
我现在做这个
$user->user_info()->create($request->all());
它可以工作,但如果第二次运行,它会为同一用户创建另一个UserInfo
记录。
有没有一种方法可以让我这样做,如果这个用户的UserInfo记录已经存在,它只更新现有的一个
有没有像updateOrCreate
这样的方法可以像这样处理Mass Assignment?
因此,如果UserInfo
记录已经存在于该User
上,则它只更新这些新值
您可以使用updateOrCreate()
方法实现updateOrCreate功能
用法:
Model::updateOrCreate(
['primary_key' => 8],
['field' => 'value', 'another_field' => 'another value']
);
在您的情况下,您可以通过以下方式使用fit:
$user->user_info()->updateOrCreate(['id'=>$user->id],$request->all());
使用模型主键的名称代替['id'=>$user->id]
中的id。