私はテーブル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で実行すると、ロールのデータは取得されません。