// class User
public function roles() {
return $this->belongsToMany('Role', 'user_roles', 'uid', 'rid');
}
// class Role
public function users() {
return $this->belongsToMany('User', 'user_roles', 'rid', 'uid');
}
// sql
-- user
id | name | other fields
-- user_role
id | name
-- user_roles, uid fk to user and rid fk to user_role
uid | rid
我正在尝试使用以下代码加载具有特定角色的用户,即加载所有编辑器:
<?php
$roleName = 'editors';
return \User::with(array('roles' => function($query) use($roleName) {
$query->where('name', '=', $roleName);
}))->get();
以上代码返回每个用户,忽略$ query-&gt;其中。怎么了?
答案 0 :(得分:1)
return \User::whereHas('roles', function($query) use($roleName) {
$query->where('name', '=', $roleName);
})->get();
答案 1 :(得分:0)
您还可以尝试另一种选择:
$role = new Role::find($role_id);
return $role->users->all();
这将返回所有用户
或者如果你有些话:
$role = new Role::find($role_id);
return $role->users()->where('name','like','%foo%')->get();
这将返回名称为foo
的所有用户