【问题标题】:How to convert mySQL Query to Laravel 5.4 Query Builder如何将 mySQL 查询转换为 Laravel 5.4 查询生成器
【发布时间】:2017-12-09 04:58:09
【问题描述】:

请有人帮我将此 SQL 查询转换为 Laravel 5.4 查询生成器语法。我已经搜索了解决方案并找到了一些解决方案,但并不完全符合我的要求。

我有 3 张桌子:

供稿: - feed_id - 用户身份 - feed_title

用户: - ID - 用户名

评论: -comment_id - feed_id - 文本 - user_id

在返回的视图中,我想查看提要标题、用户的用户名以及每个提要的所有 cmets 的计数。就像您在 facebook 上看到的一样:在显示的每个帖子上显示 cmets 的数量。请我真的需要这样做:

这是我在 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`

【问题讨论】:

  • 你能发布你的模特关系吗?
  • 我只是想用SQL来实现这个……不过谈的是关系;提要中的 user_id 是一个外键,它是用户中的主键 (id)。 feed_id 是 feeds 中的主键,而 cmets 表中的外键为 (feed_id)

标签: mysql laravel laravel-query-builder


【解决方案1】:

这应该可以做到,假设您的模型名称是“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();

【讨论】:

  • 谢谢,但是它返回一个错误,上面写着:“Class Feed not found”...你知道是什么原因造成的吗?
  • 我修复了它打印的错误,但现在它没有返回任何值,页面是空白的,没有详细信息
  • 我忘了把 ->get() 放在最后!现在应该可以工作了。
【解决方案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();

【讨论】:

  • 它返回这个错误:SQLSTATE[42000]: 语法错误或访问冲突:1055 'behiind.feeds.feed_id' is not in GROUP BY (SQL: select *, count(cmets.comment_id)作为comment_count 来自feeds 内连接users users.id = feeds.user_id 内连接comments feeds.feed_idcomment_feed_id@9865432@4 组。 comments.comment_feed_id)
  • 我知道了,没有 feeds.feed_id.. 请参阅上面的更新查询
  • 请这是工作 SQL,请帮助转换为 Laravel 查询生成器。 select feeds.feed_category, feeds.title, users.username, feeds.feed_created_at, feeds.feed_views, count(comments.comment_id) as comment_count from cmets`右加入feedsfeeds.feed_id=comments.comment_feed_id左加入usersusers.id=feeds@5组@87654344@@. 987654346@.`feed_id`
  • 我们来聊天吧,我来帮你。但是你为什么取消接受呢?
猜你喜欢
  • 2015-12-13
  • 2023-03-07
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2021-08-07
  • 2016-08-10
相关资源
最近更新 更多