【问题标题】:Get data from database using date groups in laravel [duplicate]使用laravel中的日期组从数据库中获取数据[重复]
【发布时间】: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:感谢您的快速回复。你能否指导我更多地实现我的目标。

标签: php mysql laravel eloquent laravel-query-builder


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 2014-05-04
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多