在 laravel 5.3 中更新数据透视表 Table

Updating Pivot Table in laravel 5.3

我正在使用 laravel-5.3。我在更新 table 时遇到了一些问题。假设我有两个模型(研究和成员)。两者都具有多对多关系。我有一个名为 member_research 的枢轴 table。此 table 包含以下列:

因此,当我尝试更新一些研究时,我可能还必须更新研究成员及其角色以及其他信息。我实际上正在尝试以下方式:

$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);