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