gpt4 book ai didi

php - Laravel 多对多同步与附加列

转载 作者:行者123 更新时间:2023-12-04 04:01:28 24 4
gpt4 key购买 nike

Laravel 7.0 版
我有 Team模型和 User模型, team_has_users table 。team_has_users表有team_id , user_id , role列。
一个用户可以属于一个具有不同角色的团队。
例如,一个用户可以作为客户和员工属于一个团队。
Team模型,我设置了这样的关系。

public function users(){
return $this->belongsToMany(User::class, 'team_has_user', 'team_id', 'user_id')
->withPivot('role');
}
当我将用户附加到团队时,它像这样工作得很好。
    $item->users()->attach($request->clients, ['role'=>'client']);
$item->users()->attach($request->employees, ['role'=>'employee']);
但是,当我要同步它们时,我做不到。
我试着搜索并找到了一个类似的 syncwithoutDetaching但它似乎不适合我的情况。 team_has_users table 可以是这样的。
team_id    user_id    role
1 1 client
1 1 employee
1 2 client
1 1 other
...
谁能帮我?
谢谢!

最佳答案

虽然 附上 您可以传递一个额外的数组。

$item->users()->attach($request->clients, ['role'=>'client']);
$item->users()->attach($request->employees, ['role'=>'employee']);
但是在同步中,您必须在数组内传递枢轴值,我在下面提到了示例。
$item->roles()->sync([1 => ['role' => 'client'], 2 => ['role' => 'employee']);
查询 documentation同步部分,

关于php - Laravel 多对多同步与附加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63008368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com