在特定的日期和列
在我的数据库Laravel计数结果我有以下记录:在特定的日期和列
id code product_amount created_at
1 ORD-1 250 2016-04-04 05:15:05 PM
2 ORD-1 150 2016-04-04 05:15:05 PM
3 ORD-2 450 2016-04-05 11:18:17 PM
4 ORD-3 250 2016-04-06 04:30:25 PM
5 ORD-3 300 2016-04-06 04:30:25 PM
6 ORD-3 750 2016-04-06 04:30:26 PM
7 ORD-4 650 2016-04-06 08:30:26 PM
7 ORD-4 150 2016-04-06 08:30:27 PM
现在我想的是我要算被放置在每一天的订单,所以输出应是:
count date
1 2016-04-04 // For ORD-1
1 2016-04-05 // For ORD-2
2 2016-04-06 // For ORD-3 and ORD-4
,我试图到目前为止代码:
$ordersList = Order::latest();
$ordersListDate = $ordersList->selectRaw('date(created_at) as date')
->groupBy('date')->get()
->lists('date')->toArray();
$ordersListCount = $ordersList->select([
DB::raw('DATE(created_at) AS date'),
DB::raw('COUNT(code) AS count')
])->groupBy('date')->get()->lists('count')->toArray();
当我做上述控制器发出:
array:2 [▼
0 => "2"
1 => "1"
2 => "5"
]
我抓我的头,因为很长一段时间,无法完成这件事。我知道必须有一些愚蠢的东西,我一定错过了或者没有考虑过,但我仍然处于学习阶段。
任何帮助,高度赞赏。谢谢。
您必须在表格中添加列日期(YYYY-MM-DD格式),请记住不要使用DATETIME格式。然后你可以轻松地按日期组,并指望用下面的查询命令:
Order::select(array('date', DB::raw('COUNT(code) AS count')))->groupBy('date')->get();
感谢您的答案,但我想这样做的'created_at'场只我不想用'DATETIME'列类型创建任何新列。 –
即时通讯不知道你可以做到这一点与created_at列,除非你废除created_at的时间部分 –
这是这段代码的作用:'DB :: raw('DATE(created_at)AS date')'。我已经放弃了时间部分,然后我想显示所需的输出。 –
Order::select(array(DB::raw('DATE(created_at) AS date')), DB::raw('COUNT(code) AS count')))->groupBy('date')->get();
我希望下面的查询将如此解决你的问题。我测试了它...
$ordersListCount = $ordersList->select([
DB::raw('COUNT(DISTINCT code) as count'),
DB::raw('DATE(`created_at`) as date')
])->groupBy('date')->get()->toArray();
组按日期,代码 – splash58
@ splash58尝试过为好,它没有工作.. –