Как конвертировать MySQL Query в Laravel 5.4 Query Builder
Пожалуйста, кто-то должен помочь мне преобразовать этот SQL-запрос в синтаксис Laravel 5.4 Query Builder. Я искал решения и нашел некоторые, но не совсем так, как хотел.
У меня есть 3 таблицы:
Feeds: - feed_id - user_id - feed_title
Пользователи: - id - имя пользователя
Комментарии: - comment_id - feed_id - текст - user_id
На моем возвращенном представлении я хочу видеть заголовок канала, имя пользователя и количество комментариев к каждому каналу. Как то, что вы видите на Facebook: отображение количества комментариев к каждому отображаемому сообщению. Пожалуйста, мне действительно нужно это сделать:
Это код SQL, который я пробовал в базе данных MySQL, он вроде работает там, но возвращает ошибку, когда я пытаюсь реализовать то же самое в Laravel
select *, count(comments.comment_id) as comment_count
from `feeds`
inner join `users` on
`feeds`.`user_id` = `users`.`id`
inner join `comments` on
`feeds`.`feed_id` = `comments`.`comment_feed_id`
group by `comments`.`comment_feed_id`
2 ответа
DB::table('feeds')
->selectRaw('*, count(comments.comment_id) as comment_count')
->join('users', 'users.id', '=', 'feeds.user_id')
->join('comments', 'feeds.id', '=', 'comments.comment_feed_id')
->groupBy('comments.comment_feed_id')
->get();
Это должно сделать это, предполагая, что ваша модель называется "Feed":
Feed::selectRaw('feeds.*, count(comments.comment_id) as comment_count')
->join('users', 'users.id', '=', 'feeds.user_id')
->join('comments', 'feeds.feed_id', '=', 'comments.comment_feed_id')
->groupBy('comments.comment_feed_id')->get();