Laravel:批量分配插入新记录或更新现有

时间:2016-08-04 12:36:18

标签: php eloquent laravel-5.2 mass-assignment

我有UserInfo模型和user_info模型。他们是一对一的关系。

当用户注册时,他会继续填写包含更多信息的非常大的表单。它包含在UserInfo表中,由$user->user_info()->create($request->all()); 模型表示。

我目前正在这样做

UserInfo

它可以工作,但如果它第二次运行,它会为同一个用户创建另外updateOrCreate个记录。

有没有办法可以做到这一点,如果此用户已经存在UserInfo记录,它只会更新现有的

是否有类似UserInfo的方法可以像这样使用Mass Assignment?

因此,如果此User上已存在{{1}}记录,则只会使用这些新值进行更新

1 个答案:

答案 0 :(得分:0)

您可以使用updateOrCreate()方法实现updateOrCreate功能。
用法:

Model::updateOrCreate(
   ['primary_key' => 8],
   ['field' => 'value', 'another_field' => 'another value']
);

在您的情况下,您可以按照以下方式使用健身:

$user->user_info()->updateOrCreate(['id'=>$user->id],$request->all());

代替['id'=>$user->id]中的ID,使用模型主键的名称。