Как конвертировать 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();
Другие вопросы по тегам