试图获取列表中当月每一天的销售计数,但当前在groupBy子句上出现错误。
正确的输出:
例如,12月有31天,此输出显示每天有多少销售。如果没有销售,则说0。
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 1, 0, 2, 8, 1, 0, 0, 0, 1, 0, 0, 0, 0]
销售表:
$year = 2020;
$month = 12;
$daysCount = Carbon::createFromDate($year, $month, 1)->daysInMonth;
$salesData = Sale::whereBetween('created_at', [Carbon::createFromDate($year, $month, 1), Carbon::createFromDate($year, $month, $daysCount)])
->groupBy('created_at')
->get();
dd($salesData);
groupby子句应包括您选择的所有列,因为您没有使用'select'语句,所以所有列均被选中,这与该规则冲突。
您应该使用select或selectRaw来严格标识您选择的列,并且可以使用DAYOFMONTH函数获取当月的日期:
$salesData = Sale::whereBetween('created_at', [Carbon::createFromDate($year, $month, 1), Carbon::createFromDate($year, $month, $daysCount)])
->selectRaw('DAYOFMONTH(created_at) monthDay,count(*)')
->groupBy('monthDay')
->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句