在 laravel 5.3 中更新数据透视表 Table
Updating Pivot Table in laravel 5.3
我正在使用 laravel-5.3。我在更新 table 时遇到了一些问题。假设我有两个模型(研究和成员)。两者都具有多对多关系。我有一个名为 member_research 的枢轴 table。此 table 包含以下列:
- research_id
- member_id
- 角色
因此,当我尝试更新一些研究时,我可能还必须更新研究成员及其角色以及其他信息。我实际上正在尝试以下方式:
$Research = Researches::find($request->id);
$Research->Member->all();
foreach ($Research->member as $id){
$id->pivot->role = $role;
$id->pivot->save();
}
在这种方法中,角色正在精细更新。但是当我尝试更新 member_id 时它不起作用。这是代码
$Research = Researches::find($request->id);
$Research->Member->all();
foreach ($Research->member as $id){
$id->pivot->member_id = $new_id ;
$id->pivot->save();
}
谁能帮帮我?
您不应手动更新数据透视表 table 中的 ID。
未link编辑的相关记录应从数据透视table中删除,并且应通过将新行插入数据透视table来定义新关系。
如果您想更新所选成员的角色,您可以使用 updateExistingPivot() 方法:
$research->members()->updateExistingPivot($memberId, ['role' => $newRole]);
如果你想link一个成员进行研究并设置角色,使用save()方法:
$research->members()->attach($memberId, ['role' => $newRole]);
如果您想从研究中取消link成员,请使用detach()方法:
$research->members()->detach($memberId);
我正在使用 laravel-5.3。我在更新 table 时遇到了一些问题。假设我有两个模型(研究和成员)。两者都具有多对多关系。我有一个名为 member_research 的枢轴 table。此 table 包含以下列:
- research_id
- member_id
- 角色
因此,当我尝试更新一些研究时,我可能还必须更新研究成员及其角色以及其他信息。我实际上正在尝试以下方式:
$Research = Researches::find($request->id);
$Research->Member->all();
foreach ($Research->member as $id){
$id->pivot->role = $role;
$id->pivot->save();
}
在这种方法中,角色正在精细更新。但是当我尝试更新 member_id 时它不起作用。这是代码
$Research = Researches::find($request->id);
$Research->Member->all();
foreach ($Research->member as $id){
$id->pivot->member_id = $new_id ;
$id->pivot->save();
}
谁能帮帮我?
您不应手动更新数据透视表 table 中的 ID。
未link编辑的相关记录应从数据透视table中删除,并且应通过将新行插入数据透视table来定义新关系。
如果您想更新所选成员的角色,您可以使用 updateExistingPivot() 方法:
$research->members()->updateExistingPivot($memberId, ['role' => $newRole]);
如果你想link一个成员进行研究并设置角色,使用save()方法:
$research->members()->attach($memberId, ['role' => $newRole]);
如果您想从研究中取消link成员,请使用detach()方法:
$research->members()->detach($memberId);