2016-09-23 10 views
-1

私は、ロールモデルで「多対多」の関係を持つユーザーモデルを持っています。 Userモデル:laravelで役割を持つユーザーを取得する方法は?

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

JSON形式での役割をすることなく、ユーザーのデータを返すshow()方法:

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形式でユーザデータを取得するための方法を持っているユーザコントローラを持っています。ロールデータを使用してユーザーのデータを取得する方法ユーザーのリストについては

index() method)(私はwith()メソッドを使用してロールをユーザーに返すことができますが、私はショーでそれを行う方法がわからない)方法show()メソッド出力の

return dd($user)

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

を行うことができますが(ショーで($ユーザー))メソッドをDDを試してみたのですか?それは何を示していますか? –

答えて

3

既存のモデルオブジェクトにload関数を使用すると、関係のデータをロードできます。

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

Showメソッドでロード機能を使用します。

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(); 
関連する問題