2016-04-04 3 views
1

Это пользователя модель:получить множество ролей идентификатора пользователя в Laravel

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's ролей пользователя. Для этого я написал:

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

Но выше код возвращает массив, содержащий объекты Отсносящийся для каждой роли идентификатора, который пользователь должен:

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

Но я хочу, чтобы вернуть массив идентификаторов ролей, как это :

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

Как я могу это сделать?

+0

может быть петлей над объектом, чтобы получить только 'role_id'? – Noman

ответ

2

lists() Полезная функция для этого. Обратите внимание, что он возвращает коллекцию, а не массив, поэтому, если у вас должен быть массив, вам понадобится toArray.

$roles = $user 
    ->roles() 
    ->lists('roles.role.id') 
    ->toArray(); 
Смежные вопросы