【发布时间】:2023-04-09 14:04:01
【问题描述】:
我使用数据透视表 'role_user' 在 User 模型和 Role 模型之间创建了多对多关系。我想为经过身份验证的用户检索单个列 'role_name' 作为数组。
这是我对用户和角色模型的配置:
用户.php:
public function roles()
{
return $this->belongsToMany(Role::class);
}
角色.php:
public function users()
{
return $this->belongsToMany(User::class);
}
AuthController.php:
public function details()
{
$user = Auth::user();
$user['role'] = $user->roles;
return response()->json(['success' => $user], 20);
}
laravel 响应如下:
{"user":{"id":4,"first_name":"Jill","last_name":"mclane","email":"jill@g.co","role":[{"id":1,"role_name":"vendor","pivot":{"user_id":4,"role_id":1}}]}}
我想获取role_name 列作为选定用户的数组。例如。 role:['vendor','admin']。我使用了select 方法,但它返回pivot 以及其他列:
$user['role'] = $user->roles()->select('role_name')->get();
//returns {"user":{"id":4,"first_name":"Jill","last_name":"mclane","email":"jill@g.co","role":[{"role_name":"vendor","pivot":{"user_id":4,"role_id":1}}]}}
【问题讨论】:
标签: php laravel eloquent many-to-many