簡體   English   中英

在laravel 5.3中更新數據透視表

[英]Updating Pivot Table in laravel 5.3

我正在使用laravel-5.3。 我在更新表時遇到一些問題。 假設我有兩個模型(研究和成員)。 兩者都有多對多的關系。 我有一個名為member_research的數據透視表。 此表包含以下列:

  • research_id
  • 會員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();
}

誰能幫我?

您不應手動更新數據透視表中的ID。

應從數據透視表中刪除未鏈接的相關記錄,並應通過在數據透視表中插入新行來定義新關系。

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

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

如果要將成員鏈接到研究並設置角色,請使用save()方法:

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

如果要取消成員與研究的關聯,請使用detach()方法:

$research->members()->detach($memberId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM