1

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

  • 研究编号
  • 会员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();
}

谁能帮我?

4

1 回答 1

3

您不应手动更新数据透视表中的 ID。

取消链接的相关记录应从数据透视表中删除,并且应通过将新行插入数据透视表来定义新关系。

如果要更新所选成员的角色,可以使用updateExistingPivot()方法:

$research->members()->updateExistingPivot($memberId, ['role' => $newRole]);

如果要将成员链接到研究并设置角色,请使用save()方法:

$research->members()->attach($memberId, ['role' => $newRole]);

如果要从研究中取消链接成员,请使用detach()方法:

$research->members()->detach($memberId);
于 2017-02-13T18:10:04.707 回答