我正在使用 Laravel 4 框架开发 PHP 应用程序。我已经设置了用户和角色模型。角色可以属于多个用户,一个用户可以拥有多个角色。我想选择没有任何角色的用户。如何使用 Laravel 的 ORM 进行此查询?
这是我的 Role.php
class Role extends Eloquent {
protected $table = 'roles';
public function users() {
return $this->belongsToMany('User', 'user_roles');
}
}
在我的 User.php 中,我有以下代码:
public function roles() {
return $this->belongsToMany('Role', 'user_roles');
}
我已经尝试了下面的代码,但即使我创建了没有角色的用户,它也不会返回任何用户。
User::has('roles', '=', 0)->paginate(15);
下面的代码有效,但用户是 stdClass 对象。我需要它们成为用户对象。
$users = DB::table('users')->whereNotIn('id', function($query){
$query->select('user_id')->from('user_roles');
})->paginate(15);
编辑
为 User::has('roles', '=', 0)->paginate(15) 添加了查询日志
array(3) { ["query"]=> string(189) "select * from "users" where (select count(*) from "roles" inner join "user_roles" on "roles"."id" = "user_roles "."role_id" where "user_roles"."user_id" = "users"."id") = ? limit 15 offset 0" ["bindings"]=> array(1) { [0]=> int(0) } [“时间”]=> 浮动(0.11) }