我想选择会话的所有用户,其中用户的角色不是admin,或者只选择roles.name为user的角色。
我的用户表是
和角色表就是这个
我正在运行此查询,它运行正常,但它选择所有用户,包括管理员用户。我只想选择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();
答案 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();
:)