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

Laravel: Mass assignment insert new record or update exisiting

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

当用户注册后,他会继续填写一张包含更多信息的非常大的表格。它包含在 user_info table 中,由 UserInfo 模型表示。

我目前正在这样做

$user->user_info()->create($request->all());

它有效,但如果它是第二次 运行,它会为同一用户创建另一条 UserInfo 记录。

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

是否有像updateOrCreate这样的方法可以像这样使用批量分配?

因此,如果 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。