2016-09-23 92 views
-1

我有一個用戶模型與角色模型具有「多對多」的關係。 用戶模式:如何讓用戶在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'); 
    } 
} 

我有一個用戶控制器,有一個方法以JSON格式獲取用戶數據:

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(); 
    } 
} 

show()返回用戶的數據,而不以JSON格式角色的方法。如何使用角色數據獲取用戶數據?

對於列表(index() method)的用戶,我可以使用with()方法角色回報用戶,但我不知道該怎麼做,在show()方法

return dd($user)show()方法輸出:

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

你嘗試在show()方法DD($用戶)?它顯示了什麼? –

回答

3

您可以在現有模型對象上使用load函數來加載關係的數據。

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

使用加載功能的顯示方法:

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

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

比我的語法略微乾淨。有一個upvote! – ceejayoz

0

你可以簡單地做

User::with('role')->get(); 
相關問題