使用laravel中的日期组从数据库中获取数据[重复]
Posted
技术标签:
【中文标题】使用laravel中的日期组从数据库中获取数据[重复]【英文标题】:Get data from database using date groups in laravel [duplicate] 【发布时间】:2020-11-13 07:14:25 【问题描述】:我正在使用 laravel,我正在尝试从按“created_at”列分组的数据库中获取数据。 created_at 列中的数据被存储为以下格式,
2020-07-23 07:03:59
我的问题是,我们如何仅使用日期组来获取数据。 例如,所有的记录应该被分组到一个具有相同日期的数组/对象中。
我尝试执行以下查询,
$transactions= MyTransaction::where('id','=',$user->id)->orderBy('created_at')->get()->groupBy(function($item)
return $item->created_at->format('Y-m-d');
);
但它不会返回我所期望的,它也会考虑秒数和小时数。
请指导我解决这个问题。
【问题讨论】:
你不能用mysql/eloquent将结果分组到一个数组中,groupBy用于将所有结果压缩成每组1行,这主要用于count()
之类的函数。您最好的选择是在使用 php.ini 查询后对选项进行排序。或者对每个组做一个单独的查询。
@Merijndk:感谢您的快速回复。你能否指导我更多地实现我的目标。
【参考方案1】:
$column = \DB::raw("CONCAT(YEAR(`ride_date`),'-',MONTH(`ride_date`),'-',DAY(`ride_date`)) AS `group_column`");
$transactions= MyTransaction::select('*',$column)->where('id','=',$user->id)->orderBy('created_at')->groupBy('group_column')->get();
【讨论】:
以上是关于使用laravel中的日期组从数据库中获取数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章
试图从 laravel 中的日期获取月份(并且 postgres 提取不起作用)
在 PHP Laravel 中的 SQL Server 中将字符串转换为日期数据类型