小编lov*_*ing的帖子

Laravel 多对多同步与附加列

Laravel 版本 7.0

我有Team模型和User模型,team_has_users表格。

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');
}
Run Code Online (Sandbox Code Playgroud)

当我将用户加入团队时,效果很好。

    $item->users()->attach($request->clients, ['role'=>'client']);
    $item->users()->attach($request->employees, ['role'=>'employee']);
Run Code Online (Sandbox Code Playgroud)

但是,当我要同步它们时,我却做不到。

我尝试搜索并找到了类似的,syncwithoutDetaching但它似乎不适合我的情况。 team_has_users表可以是这样的。

team_id    user_id    role
1           1         client
1           1         employee
1           2         client
1           1         other
...
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

谢谢你!

php laravel eloquent laravel-query-builder laravel-relations

5
推荐指数
1
解决办法
3212
查看次数

Laravel Spatie 通过 Eager Loading 获得所有权限

大家!我正在使用 Laravel Spatie 权限包。我可以像这样获得用户的所有分配权限。

$user->getAllPermissions()
Run Code Online (Sandbox Code Playgroud)

但是,我想通过急切加载获得所有权限。也许像这样。

$users = User::with('getAllPermissions')->get();
Run Code Online (Sandbox Code Playgroud)

但这没有用。

我试过

$users = user::with('permissions')->get();
Run Code Online (Sandbox Code Playgroud)

但查询计数与结果相同

$users = user::get();
Run Code Online (Sandbox Code Playgroud)

那么$user->getAllPermissions()已经是急切加载的查询了吗?

或者是否有任何急切加载的查询?

permissions laravel laravel-5 spatie laravel-permission

2
推荐指数
1
解决办法
3485
查看次数