簡體   English   中英

如何獲取laravel中所有用戶的所有角色?

[英]How to get all the roles for all the users in laravel?

我正在使用一個函數來獲取 laravel 中所有用戶的所有角色。

我得到以下 json 對象:

{
  "users": [
      {
     id: 1,
     name: "abc",
     user_roles: [
         {
             "id": 1,
             "role_id": 1,
             "user_id": 1,
         },
         {
             "id": 1,
             "role_id": 2,
             "user_id": 1,
         },
       ]
      ]
     }
}

我想在“user_roles”部分獲取特定角色,例如:

{
  "users": [
      {
     id: 1,
     name: "abc",
     user_roles: [
         {
             "id": 1,
             "role": "role1",
         },
         {
             "id": 1,
             "role": "role2",
         },
       ]
      ]
     }
}

我有 3 個表:用戶、角色和 user_role。

問題是因為我從“user_role”中提取元素,我可以添加什么來獲得上述結果?

user_role表中,您必須定義如下的belongsTo關系

public function role_name(): BelongsTo
{
   return $this->belongsTo(Role::class,'role_id','id');
}

然后在user_roles中使用with() ,如下所示

User::with(['user_roles' => function($query){
         $query->with('role_name');
      }])
      ->get();

所以,輸出將是

[id] => 1
[name] => abc
[user_roles] => Array
    (
        [0] => Array
            (
                [id] => 1
                [a_role_id] => 1
                [a_user_id] => 1
                [role_name] => Array
                    (
                      [id] => 1
                      [name] => role1
                    )
            )

        [1] => Array
            (
                [id] => 1
                [a_role_id] => 2
                [a_user_id] => 1
                [role_name] => Array
                    (
                      [id] => 2
                      [name] => role2
                    )
            )
     )

您可以使用laratrustlarapermission ,以避免任何問題。

你檢查過 Laravel 文檔嗎?

要定義這種關系,需要三個數據庫表: usersrolesrole_user role_user表派生自相關模型名稱的字母順序,並包含user_idrole_id列。 該表用作鏈接用戶和角色的中間表。

你可以在Laravel Eloquent 多對多關系中找到完整的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM