2016-04-04 6 views
1

Dies ist Benutzer Modell:erhalten Reihe von Rollen ID eines Nutzers in Laravel

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

Und das ist Rolle Modell:

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

Wie können Sie diese beiden Modelle sehen haben Viele zu viele Beziehung zwischen ihnen.

Jetzt möchte ich ein Array von IDs von Rollen eines Benutzers erhalten. Dazu schrieb ich folgendes:

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

Aber obige Code gibt ein Array Objekte enthält beziehe jeder Rolle ID, die Benutzer haben:

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

Aber ich möchte eine Reihe von IDs von Rollen wie diese zurück :

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

Wie kann ich das tun?

+0

könnte Schleife über das Objekt sein, nur 'role_id' zu bekommen? – Noman

Antwort

2

Die Eloquent-Funktion lists() ist hilfreich. Beachten Sie, dass es eine Auflistung und kein Array zurückgibt. Wenn Sie also das Array benötigen, benötigen Sie auch toArray.

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