首页 > 解决方案 > Laravel Eloquent - pluck() 角色名称

问题描述

我正在尝试从具有角色的请求中获取经过身份验证的用户对象。我正在使用Spatie laravel-permissions和 Laravel 8。

像这样从请求中获取用户对象

$request->user()->getRoleNames()->pluck('name');
return $request->user();

退货

{
   "id":1,
   "name":"User name",
   "email":"User email",
   "email_verified_at":null,
   "company":"--",
   "phone":"--",
   "created_at":"--",
   "updated_at":"--",
   "roles":[
      {
         "id":1,
         "name":"Super Admin",
         "guard_name":"web",
         "created_at":"--",
         "updated_at":"--",
         "pivot":{
            "model_id":1,
            "role_id":1,
            "model_type":"App\\Models\\User"
         }
      }
   ]
}

我需要退回的东西

{
   "id":1,
   "name":"User name",
   "email":"User email",
   "email_verified_at":null,
   "company":"--",
   "phone":"--",
   "created_at":"--",
   "updated_at":"--",
   "roles":["Super Admin"]
}

标签: phplaraveleloquentlaravel-permission

解决方案


添加roles到用户对象,像这样

$user = $request->user();
$user->roles = $user->roles()->pluck('name');
return $user;

推荐阅读