[英]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
)
)
)
您可以使用laratrust
或larapermission
,以避免任何問題。
你檢查過 Laravel 文檔嗎?
要定義這種關系,需要三個數據庫表:
users
、roles
和role_user
。role_user
表派生自相關模型名稱的字母順序,並包含user_id
和role_id
列。 該表用作鏈接用戶和角色的中間表。
你可以在Laravel Eloquent 多對多關系中找到完整的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.