Laravel:大规模分配插入新记录或更新现有记录


Laravel: Mass assignment insert new record or update exisiting

我有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。