У меня есть таблицы users
, roles
, их сводная таблица role_user
и таблица comments
в моей БД. Я пытаюсь сделать запрос, где я могу получить всех пользователей с их ролями для комментариев. Я не знаю, как это сделать, до сих пор у меня есть запрос, который выглядит следующим образом:Laravel inested 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();
Но это не сработало. Я установки отношения в замечании модели, как это:
class Comment extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
public function roles()
{
return $this->hasManyThrough('App\Role', 'App\User');
}
}
Update
Поскольку это базовая апи конечная точка, и я посылаю эти данные Угловое фронтэнда, я только что проверил результаты в почтальон и там я получаю данные для ролей пользователей с этим запросом:
$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.