2016-09-23 4 views
-1

Ich habe ein Benutzermodell, das eine Beziehung "viele zu vielen" mit einem Vorbild hat. User-Modell:Wie bekomme ich Benutzer mit Rollen in Laravel?

class User extends Model 
{ 
    ... 
    public function roles() 
    { 
     return $this->belongsToMany(Config::get('entrust.role'), Config::get('entrust.role_user_table'), 'user_id', 'role_id'); 
    } 
} 

Ich habe einen User-Controller, die eine Methode für das Erhalten von Benutzerdaten im JSON-Format haben:

class UserController extends Controller { 
    ... 

    // GET /user/3 
    public function show(User $user) 
    { 
     // $user is a single user 
     // return single user's data without roles 
     // I want to get user WITH roles 
     return $user; 
    } 

    // GET /users 
    public function index(User $user) 
    { 
     // returns list of users with roles. 
     $user->with('roles')->get(); 
    } 
} 

Verfahren show() Benutzerdaten ohne Rollen im JSON-Format zurückgibt. Wie erhält man Benutzerdaten mit Rollendaten?

Für Liste (index() method) von Benutzern mir Benutzer mit Rollen mit with() Methode zurückkehren kann, aber ich weiß nicht, wie es zu tun in Show() -Methode

return dd($user) in show() Methode Ausgänge:

User {#192 ▼ 
    #fillable: array:7 [▼ 
    0 => "name" 
    1 => "email" 
    2 => "password" 
    3 => "username" 
    4 => "first_name" 
    5 => "last_name" 
    6 => "is_guest" 
    ] 
    #hidden: array:2 [▼ 
    0 => "password" 
    1 => "remember_token" 
    ] 
    #totalCount: null 
    #connection: null 
    #table: null 
    #primaryKey: "id" 
    #keyType: "int" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:11 [▼ 
    "id" => 11 
    "username" => "some_username6" 
    "email" => "[email protected]" 
    "password" => "$2y$10$h8mN6r8rWdiXv9VJG5z7NucaOrD9kEtfBSXnL6BdJGzV1671EkdaG" 
    "name" => "some name6" 
    "first_name" => "some_first_name6" 
    "last_name" => "some_last_name6" 
    "remember_token" => null 
    "created_at" => "2016-09-02 19:14:46" 
    "updated_at" => "2016-09-02 19:14:46" 
    "is_guest" => 1 
    ] 
    #original: array:11 [▼ 
    "id" => 11 
    "username" => "some_username6" 
    "email" => "[email protected]" 
    "password" => "$2y$10$h8mN6r8rWdiXv9VJG5z7NucaOrD9kEtfBSXnL6BdJGzV1671EkdaG" 
    "name" => "some name6" 
    "first_name" => "some_first_name6" 
    "last_name" => "some_last_name6" 
    "remember_token" => null 
    "created_at" => "2016-09-02 19:14:46" 
    "updated_at" => "2016-09-02 19:14:46" 
    "is_guest" => 1 
    ] 
    #relations: [] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▼ 
    0 => "*" 
    ] 
    #dates: [] 
    #dateFormat: null 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    #morphClass: null 
    +exists: true 
    +wasRecentlyCreated: false 
} 
+0

haben Sie versucht, dd ($ user) in Show() -Methode? Was zeigt es dann? –

Antwort

3

Sie können die Funktion load für ein vorhandenes Modellobjekt verwenden, um die Daten einer Beziehung zu laden.

$user->load('roles') 
return $user; 
3

die Ladefunktion in der Show-Methode verwenden:

class UserController extends Controller 
{ 
    public function show(User $user) 
    { 
     return $user->load('roles'); 
    } 

    public function index(User $user) 
    { 
     return $user->with('roles')->get(); 
    } 
} 
+0

Etwas sauberere Syntax als meine. Habe eine Verbesserung! – ceejayoz

0

Sie können einfach tun

User::with('role')->get(); 
Verwandte Themen