我的数据库中有users
,roles
,其数据透视表role_user
和表comments
。我正在尝试进行查询,我可以让所有用户获得他们的评论角色。我不知道该怎么做,到目前为止我有一个看起来像这样的查询:
$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();
但那没用。 我在Comment模型中设置了这样的关系:
class Comment extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
public function roles()
{
return $this->hasManyThrough('App\Role', 'App\User');
}
}
更新
由于这是后端api端点,我将数据发送到Angular前端,我只是检查了postman中的结果,并在那里使用此查询获取用户角色的数据:
$comments = Comment::with('user.roles')->where('article_id', $articleId)->get();
然后,结果如下:
"user":{"id":1,
"first_name":"admin",
"last_name":"admin",
"photo":"","email":"admin@coop.com",
"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}
}]}}
但是当我在Angular的控制器中执行console.log时,我没有获得任何角色数据。
答案 0 :(得分:1)
试试这个为我工作
$comments = Comment::with(['user', 'roles'])->where('article_id', $articleId)->get();
你应该将一个参数作为数组传递给预先加载。
由于