Laravel вложенная 'с' функцией сложная проблема запроса - PullRequest
0 голосов
/ 18 апреля 2020

В Laravel Я хочу получить данные из таблицы 1, которая имеет отношение «один ко многим» с таблицей 2, которая снова имеет отношение «один ко многим» с таблицей 3.

Например, я есть таблица USER, таблица POSTS и таблица COMMENTS. У одного пользователя может быть много постов, а у каждого из них - много комментариев.

Я только хочу выполнить запрос, который будет возвращать каждого из пользователей, с их сообщением (одиночным), ЧТО имеет последний комментарий (одиночный) ) (среди всех комментариев во всех сообщениях этого пользователя).

Image illustration of the data

Я пробовал Laravel вложенную функцию ', но у меня возникли проблемы с построением запроса .

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

используйте метод соединения, как показано ниже:

$comments = User::join('posts', 
 'posts.user_id', '=', 'users.id')->join('comments', 'comments.post_id', '=', 
 'posts.id')->orderBy('comments.created_at', 'desc')->first();
0 голосов
/ 18 апреля 2020

Пожалуйста, попробуйте следующий код

 $user = USERS::with(['posts' =>function($query) { $query->with(['comments'])->orderBy('created_at','desc')->first(); } ])->where('user_id',$id)->get();

Надеюсь, это сработает.

Дайте мне знать, если у вас возникнут ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...