在我的数据库中,我有以下记录:
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();
以上控制器在我dd($ordersListCount)
时给出:
array:2 [▼
0 => "2"
1 => "1"
2 => "5"
]
我很长时间都在挠头,无法完成这件事。我知道必须有一些愚蠢的事情,我必须错过或不考虑,但我仍处于学习阶段。
非常感谢任何帮助。感谢。
答案 0 :(得分:1)
你想要这样的查询
select count(distinct code) count, date(created_at) as `date`
from orders
group by date
但是我不能用你的laravel语言写出来:(
sqlfiddle刚刚回答。它是link
答案 1 :(得分:0)
您必须在(YYYY-MM-DD格式)中添加列日期,切记不要在表格中使用DATETIME格式。然后,您可以按日期轻松对其进行分组,并使用以下查询计算订单:
Order::select(array('date', DB::raw('COUNT(code) AS count')))->groupBy('date')->get();
答案 2 :(得分:0)
Order::select(array(DB::raw('DATE(created_at) AS date')), DB::raw('COUNT(code) AS count')))->groupBy('date')->get();
答案 3 :(得分:0)
我希望以下查询可以解决您的问题。我测试了它......
$ordersListCount = $ordersList->select([
DB::raw('COUNT(DISTINCT code) as count'),
DB::raw('DATE(`created_at`) as date')
])->groupBy('date')->get()->toArray();