2016-07-18 4 views
0

У меня есть таблицы 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.

ответ

1

попробовать это, что он работает для меня

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

вы должны передать аргумент как массив для нетерпеливой загрузки.

С благодарностью