Laravel 仅按日期分组并获取计数
Posted
技术标签:
【中文标题】Laravel 仅按日期分组并获取计数【英文标题】:Laravel group by date to month only and get count 【发布时间】:2016-01-03 21:28:22 【问题描述】:我有交易表:
我的表架构:
id | item_name | quantity | created_at
我尝试了很多方法,但都不起作用(链接:Laravel Eloquent get results grouped by days。
我想这样显示:
例子:
数量:xxx 月份:七月
数量:xxx 月份:十月
数量:xxx 月份:11 月
如何将 created_at 列转换为仅月份分组并将其显示为 Word 而不是数字,然后获取当月分组数量的计数?
谢谢
【问题讨论】:
***.com/questions/20603075/…这可能对你有帮助 【参考方案1】: $data= Transaction::select('id', 'item_name','quantity', 'created_at')
->get()
->groupBy(function($val)
return Carbon::parse($val->created_at)->format('m');
);
【讨论】:
好的答案解释并提供代码。考虑更新您的答案,以包含有关此代码如何工作以及为什么它是最佳选择的说明。 ErrorException in 32ea051d19391ac12447d17c2f1b05e8 line 97: Trying to get property of non-object (View: /home/mapdipbc/resources/views/a/chart1.blade.php) 如何在我有 2 个 created_at 字段的连接中执行此操作? 此示例获取一个集合(在内存中),然后对集合中的数据进行分组。分组不在数据库查询中完成。它具有跨任何数据库引擎工作的优势,但可能涉及从数据库中移动大量数据以进行后处理(并且可能会耗尽内存)。这个例子看起来不像它处理分组所依据的每个月的sum()
值,所以我怀疑如果没有一些修复,它实际上不会工作。【参考方案2】:
使用 eloquent date 函数只查找日期,您可以使用月份获取月份或年份获取仅年份。
例如:
public function salesmonthly(Request $request)
$monthlysales=DB::table('tbl_invs')
->select(DB::raw('sum(total) as total'),DB::raw('date(created_at) as dates'))
->groupBy('dates')
->orderBy('dates','desc')
->get();
// dd($monthlysales);
return view('reports.monthlysales', compact('monthlysales'));
【讨论】:
【参考方案3】:如果你不想使用碳
$data= Transaction::get()
->groupBy(function($item)
return $item->created_at->month;
);
【讨论】:
但它也是碳:/ 'Created_at' 默认情况下被转换为碳对象。【参考方案4】:如果我们想根据不同年份的每个月获取计数,我们使用以下代码
$usersPerMonth = User::select(
DB::raw('count(id) as `data`'),
DB::raw("DATE_FORMAT(created_at, '%Y-%m') as new_date")
)
->groupBy('new_date')->orderBy('new_date')->get();
【讨论】:
以上是关于Laravel 仅按日期分组并获取计数的主要内容,如果未能解决你的问题,请参考以下文章