【问题标题】:Need help to write a frequent query in Laravel 3需要帮助在 Laravel 3 中编写频繁查询
【发布时间】:2013-07-04 09:52:14
【问题描述】:

我需要一些帮助来编写 Laravel 3 中的频繁查询。

我有一个名为“votes”的表,它将用户投票存储在“posts”中。

所以,“votes”表有一个“user_id”、“post_id”和“timestamp”。

现在我需要编写一个查询来显示“趋势”帖子(在特定时间范围内)。我的逻辑是首先选择在所需时间范围内(例如最近 30 天)添加的记录,然后按 post_id 对记录进行分组,然后按计数对其进行排序。

我可以分别为每个条件编写查询。但我不知道如何将所有这些条件合并到一个查询中。

基本上...我只是希望有人为此 SQL 编写一个频繁查询

SELECT post_id, COUNT(*)
FROM votes
GROUP BY post_id
ORDER BY COUNT(*) DESC

我们将不胜感激任何形式的帮助。

谢谢。 :)

【问题讨论】:

  • 到目前为止您有什么疑问?另外,如果你用mysql 标签问这个问题,你可能会很幸运,因为它不一定特定于 Laravel。
  • @fideloper 我已经编辑了我的问题。请检查!! :)

标签: php mysql laravel laravel-3 query-builder


【解决方案1】:

通过频繁查询生成器,我假设您指的是 Fluent Query Builder。

使用 Fluent Query Builder 你会得到这样的结果:

Laravel 3:

$results = DB::table('votes')->get(array('post_id','count(*)'))->group_by('post_id')->order_by('count(*)','desc')->get();

Laravel 4:

$results = DB::table('votes')->select('post_id','count(*)')->groupBy('post_id')->orderBy('count(*)','desc')->get();

希望这会有所帮助!祝你好运!

【讨论】:

  • 感谢您的回答。我为这个愚蠢的错误道歉。我什至没有意识到我经常写作。 :D
【解决方案2】:

我猜你正在寻找这样的东西。

SELECT 
p.post_id, COUNT(*)
FROM 
posts p
LEFT JOIN
votes v
WHERE p.add_date_time > DATE_SUB( CURRENT_DATE() , INTERVAL 30 DAY)
GROUP BY p.post_id
ORDER BY COUNT(*) DESC

【讨论】:

  • 是的。我的查询看起来完全像这样。但我需要编写这是频繁查询生成器。你能帮帮我吗?
  • “频繁查询生成器”是什么意思?
猜你喜欢
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2021-01-14
  • 2019-10-11
相关资源
最近更新 更多