我有以下表格,并且想要对条件进行左连接和左连接表中的另一个内部连接
用户表
id | name 1 john 2 sam 3 cecil
角色表
id | name 1 admin 2 editor
model_has_roles表
role_id | model_type | model_id 1 App\User 1 2 App\User 2
我想要的
如果 model_type为'App \ User',则在user.id和model_has_roles.model_id列上的用户表和model_has_roles表之间进行左联接,然后在Roles表和model_has_roles表之间进行另一个内部联接role_id和Roles.id列。所以结果应该是这样,
id | name | role 1 john admin 2 sam editor 3 cecil -
我尝试了以下查询,但无法正常工作
DB::table('users')->select('id', 'name', 'email', 'created_at', 'role_id')
->leftJoin('model_has_roles', 'model_has_roles.model_id', '=', 'users.id')
->where('model_has_roles.model_type', '=', 'App\User')
->paginate(1);
如果可以的话,请帮助我为此写一个雄辩的查询。
谢谢
P.S:实际上,我正在使用spatie / laravel-permission,并尝试使用其角色名称获取所有用户。
答案 0 :(得分:1)
这应该可以正常工作:
App\User::with('roles')->get();