需要帮助在Laravel 3中编写频繁的查询

时间:2013-07-06 13:18:20

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

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

我有一个名为“投票”的表格,用于在“帖子”中存储用户投票。

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

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

我可以单独为每个条件编写查询..但我无法弄清楚如何将所有这些条件合并到一个查询中。

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

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

任何形式的帮助都将受到极大的赞赏。

谢谢。 :)

2 个答案:

答案 0 :(得分: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();

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

答案 1 :(得分:0)

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

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
相关问题