2016-04-04 20 views
1

におけるユーザーのロールの配列IDを取得します。これは、ユーザーモデルです:laravel

class User extends Model 
{ 
    /** 
    * The roles that belong to the user. 
    */ 
    public function roles() 
    { 
     return $this->belongsToMany('App\Role'); 
    } 
} 

そして、これが役割モデルです:あなたはこれらの2つのモデルが持って見ることができるように

class Role extends Model 
{ 
    /** 
    * The users that belong to the role. 
    */ 
    public function users() 
    { 
     return $this->belongsToMany('App\User'); 
    } 
} 

それらの間の多対多の関係。

今、ユーザの役割ののの配列を取得したいと考えています。

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

しかし、上記のコード

は、ユーザーが持っている各役割のIDを参照のうえ、オブジェクト含む配列を返します:

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

をしかし、私はこのような役割のIDの配列を返すようにしたい、そのために私はこれを書きました:

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

どうすればいいですか?

+0

は、 'role_id'だけを取得するオブジェクトをループすることができますか? – Noman

答えて

2

lists()優性関数はこれに役立ちます。配列ではなくコレクションを返しますので、配列を持たなければならない場合はtoArrayも必要です。

$roles = $user 
    ->roles() 
    ->lists('roles.role.id') 
    ->toArray();