Laravel 5.5根据具有角色的会话选择用户

时间:2018-02-26 09:32:47

标签: mysql laravel laravel-5.5

我想选择会话的所有用户,其中用户的角色不是admin,或者只选择roles.name为user的角色。

我的用户表是

enter image description here

会话表是 enter image description here

和角色表就是这个

enter image description here

我正在运行此查询,它运行正常,但它选择所有用户,包括管理员用户。我只想选择roles.name为user

的用户
    $sessions = Sessions::where('user_id', '<>', 'NULL')
                        ->join('users', 'users.id', 'sessions.user_id')
                        ->select('users.first_name','users.last_name',
                            DB::raw('count(sessions.user_id) as counts'))
                        ->get();

2 个答案:

答案 0 :(得分:0)

您首先要使用users表加入角色,因为您无法使用您设置的设置来了解某个用户的角色,因此在将role_id添加为外键之后用户表,您可以像这样进行查询:

$sessions = Sessions::where('user_id', '<>', 'NULL')
                        ->join('users', 'users.id', 'sessions.user_id') 
                        ->join('roles', 'roles.id', 'users.role_id')   
                        ->where('roles.name','user')
                        ->select('roles.name as role','users.first_name','users.last_name',
                            DB::raw('count(sessions.user_id) as counts'))
                        ->get();

答案 1 :(得分:0)

您可以为此使用数据库查询。

DB::table(sessions)->where('roles', $user->hasRole('user'))->get();

:)