我在一个有这种结构的拉威尔项目中工作
用户:id | first | u name |。。。
角色:id|name
分配的角色:id |用户id |角色id
我认为这是很明显的:p
用户模型
class User extends ConfideUser {
use HasRole;
public function Roles(){
return $this->belongsToMany('Role','assigned_roles');
}
角色模型
class Role extends EntrustRole
{
public function Users()
{
return $this->belongsToMany('User','assigned_roles');
}
}
我正在寻找一种方法来获取所有具有指定角色(在本例中为“教师”)的用户。我试过这个:
$students = User::with(array('Roles' => function($query) {
$query->where('name','Teacher');
}))
->get();
return $students;
但这总是返回一个包含所有用户的数组。
有人知道为什么会这样吗?谢谢
如果您想让所有用户具有潜在角色列表:
$authorizedRoles = ['Teacher', 'Professor', 'Super professor'];
$users = User::whereHas('roles', static function ($query) use ($authorizedRoles) {
return $query->whereIn('name', $authorizedRoles);
})->get();
试试这个。
Role::where('rolename', 'user')->first()->users()->get()
你现在在你的$学生
查询中要求laravel的是“给我所有的学生,如果每个学生的角色是老师,给我他们所有的角色”
尝试使用whereHas
$students = User::whereHas(
'roles', function($q){
$q->where('name', 'Teacher');
}
)->get();
这应该会让你得到用户,但只有当他们有一个名为teacher的角色时。
我搜索了以下内容:,但没有找到任何内容。 JDA版本:
有没有一种方法可以在Laravel中检索具有所有属性的模型,即使这些属性为空?它似乎只返回属性不为null的模型。 原因是我有一个函数,如果模型中存在属性,它将从数组中更新模型属性。在设置模型之前,我使用property_exists()函数检查模型是否具有特定属性。数组键和模型属性应该匹配,所以它就是这样工作的。 如果模型已经设置了属性,它可以正常工作,因为属性存在并从数组中获取值。但是,如果属
我有3个表:User、Role和具有Role\u id和User\u id的透视表RoleUser。 对于关系在我的模型我这样做: 榜样: 用户模型: 我为filter by one角色做了这项工作,效果很好: 但是现在我需要通过许多角色来过滤我的用户。 我将从我的前端发送一个数组,其中包含角色的id。 事实上,我可以得到如下角色 但我不知道如何才能获得具有此角色的用户。
我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,每个角色可以有多个权限。中间件应在继续请求之前检查用户是否具有特定权限(在其任何角色内)。 我能够实施一个案例,其中 用户属于一个具有多个权限的角色 我需要实现具有多个权限的多个角色的用户。有什么指点吗?
这是用户模型: 这是榜样: 正如您所看到的,这两个模型之间存在多对多关系。 现在我想得到一个用户角色的ID数组。为此我写了这个: 但上面的代码返回一个数组,其中包含引用用户拥有的每个角色ID的对象: 但是我想返回一个角色的ID数组,如下所示: 我怎么能那样做?
亲爱的人们。 最近,我开始更多地使用Laravel模型和雄辩的关系,而不是编写原始查询。 问题:我无法访问表“roles”的任何字段变量。$user->roles->role_name或role_description。