2016-07-18 4 views
0

私はテーブルusers,roles、ピボットテーブルrole_user、テーブルcommentsをDBに持っています。私は、コメントの役割を持つすべてのユーザーを取得できるクエリを作成しようとしています。私はこれまでのところ、私はこのようになりますクエリを持っている、これを行う方法を確認していない:Laravelネストされたeager loading

$comments = Comment::with('user')->where('article_id', $articleId)->get(); 

そのクエリでは、私は各コ​​メントのためにユーザーを得るが、私はロールを追加しようとしたとき、次のように:

$comments = Comment::with('user', 'roles')->where('article_id', $articleId)->get(); 

あるいは、このような:

$comments = Comment::with('user.roles')->where('article_id', $articleId)->get(); 

しかし、それは動作しませんでした。 私はセットアップ、このようなコメントモデル内の関係があります。これは、バックエンドのAPIエンドポイントであると私はちょうどで結果を確認し、角度のフロントエンドにそのデータを送信しておりますので

class Comment extends Model 
{ 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

    public function roles() 
    { 
     return $this->hasManyThrough('App\Role', 'App\User'); 
    } 
} 

更新

を郵便配達とそこに私は、このクエリを使用してユーザーの役割のためのデータを取得:

$comments = Comment::with('user.roles')->where('article_id', $articleId)->get(); 

すると、結果は次のようになります。

"user":{"id":1, 
     "first_name":"admin", 
     "last_name":"admin", 
     "photo":"","email":"[email protected]", 
     "created_at":null, 
     "updated_at":"2016-06-14 16:19:35", 
     "roles":[{"id":1, 
        "name":"Admin", 
        "slug":"admin", 
        "description":null, 
        "parent_id":null, 
        "created_at":null, 
        "updated_at":null, 
        "pivot":{"user_id":1, 
          "role_id":1, 
          "created_at":"2016-06-14 14:14:25", 
          "updated_at":"2016-06-14 14:14:25", 
          "granted":1} 
}]}} 

ただし、私のコントローラのconsole.logをAngularで実行すると、ロールのデータは取得されません。

答えて

1

は、あなたが熱心なロードのための配列として引数を渡す必要があり、それは私

$comments = Comment::with(['user', 'roles'])->where('article_id', $articleId)->get(); 

のために働いて、これを試してみてください。

ありがとうございました

関連する問題