当前位置: 首页 > 知识库问答 >
问题:

获取laravel中用户的角色ID数组

从光启
2023-03-14

这是用户模型:

class User extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function roles()
    {
        return $this->belongsToMany('App\Role');
    }
}

这是榜样:

class Role extends Model
{
    /**
     * The users that belong to the role.
     */
    public function users()
    {
        return $this->belongsToMany('App\User');
    }
}

正如您所看到的,这两个模型之间存在多对多关系。

现在我想得到一个用户角色的ID数组。为此我写了这个:

$user = User::find($id);
return $user->roles()->get(['roles.role_id']);

但上面的代码返回一个数组,其中包含引用用户拥有的每个角色ID的对象:

[
    {
        "role_id": 9,
        "pivot": {
            "user_id": 2,
            "role_id": 9
        }
    },
    {
        "role_id": 14,
        "pivot": {
            "user_id": 2,
            "role_id": 14
        }
    }
]

但是我想返回一个角色的ID数组,如下所示:

[9,14,......]

我怎么能那样做?

共有1个答案

扶绍辉
2023-03-14

lists()雄辩函数对此很有帮助。请注意,它返回的是一个集合,而不是数组,因此,如果必须使用数组,则还需要toArray

$roles = $user
  ->roles()
  ->lists('roles.role.id')
  ->toArray();

更新:(适用于版本)

在laravel版本中不建议使用list()方法

$roles = $user
  ->roles
  ->pluck('id')
  ->toArray();

如果您需要字符串,例如刀片中的字符串,则可以在不使用toArray()附件的情况下使用:

$roles = $user
  ->roles
  ->pluck('id');
 类似资料:
  • 我在一个有这种结构的拉威尔项目中工作 用户:id | first | u name |。。。 角色:id|name 分配的角色:id |用户id |角色id 我认为这是很明显的:p 用户模型 角色模型 我正在寻找一种方法来获取所有具有指定角色(在本例中为“教师”)的用户。我试过这个: 但这总是返回一个包含所有用户的数组。 有人知道为什么会这样吗?谢谢

  • 我是LDAP的新手,我尝试过在OpenLDAP上实现RBAC。我创建了一些用户(inetOrganizationPerson)并将它们放在组中(groupOfNames)。接下来,我创建了一些角色(organizationalRole)并将它们与用户组关联(RoleIncuspant),而不是直接将它们与用户关联。 1)/usr/local/bin/ldapsearch-x-b'ou=groups

  • 不管怎样,感谢所有人的回答。

  • 我正在尝试评估身份验证用户的角色数组。100和102是我要检查的角色值。如果身份验证用户具有其中之一,则返回。这可能吗?以下是我目前的代码: 我不希望一次重复检查一个,因为处理代码太多,会使文件过长。

  • 我已经基于命名的路由为Laravel(4.2)创建了自定义角色管理器,例如: 基本上,任何注册为

  • 接口说明 获取当前登录用户id 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/getId 是否需要登录 是 请求字段说明 无 响应字段说明 参数 类型 说明 userId String 登录用户id 响应成功示例 { "code": 200, "data": { "userId":