如何将mySQL查询转换为Laravel 5.4 Query Builder

时间:2017-07-05 13:28:48

标签: mysql laravel laravel-query-builder

请有人帮我将此SQL查询转换为Laravel 5.4 Query Builder语法。我已经搜索了解决方案并发现了一些但并不完全符合我的想法。

我有3张桌子:

饲料:     - feed_id    - 用户身份     - feed_title

用户:    - ID     - 用户名

Commments:     - comment_id     - feed_id     - 文字     - user_id

在我的观看结果中,我想查看Feed标题,用户的用户名以及每个Feed的所有评论计数。就像你在Facebook上看到的那样:显示每个帖子的评论数量。我真的需要这样做:

这是我在MySQL数据库中尝试过的SQL代码,它在那里工作但是当我尝试在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 个答案:

答案 0 :(得分:0)

这应该这样做,假设您的模型名称为" 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();

答案 1 :(得分:0)

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();