【发布时间】:2015-10-09 00:43:08
【问题描述】:
我正在尝试创建一个 Eloquent 查询,以获取每个不同日期发布的帖子总数,如果缺少日期,请将其填充为零。
例如,如果我的表格如下所示:
+----+---------------------+
| id | date |
+----+---------------------+
| 1 | 2015-01-01 00:00:00 |
| 2 | 2015-01-01 01:53:18 |
| 3 | 2015-01-01 02:41:26 |
| 4 | 2015-01-02 12:51:01 |
| 5 | 2015-01-05 08:24:12 |
+----+---------------------+
这将输出:
2015-01-01 : 3
2015-01-02 : 1
2015-01-05 : 1
但是请注意,03-04 的日子不见了。我怎样才能包含这些日期,但给它们赋值 0 以便我最终得到如下输出:
2015-01-01 : 3
2015-01-02 : 1
2015-01-03 : 0
2015-01-04 : 0
2015-01-05 : 1
这是我当前的查询:
$posts = Post::select(array(
DB::raw('DATE(`created_at`) as `date`'),
DB::raw('COUNT(*)as `count`')
))
->where('created_at', '>', Carbon::today()->subWeek())
->groupBy('date')
->orderBy('date', 'DESC')
->lists('count', 'date');
谢谢!
【问题讨论】:
-
可以对日期范围有任何假设吗?例如,您事先知道日期将在 2015-01-01 到 2015-01-31 之间?
-
@CrackingTheCode 日期始终是从 7 天前到今天的所有内容。
标签: laravel laravel-4 eloquent laravel-5