Laravel 根据每个日期计算记录

在我的数据库中我有类似的记录


**my_table_name**


id      date_column               status

1       2020-07-21 00:29:05       done

2       2020-07-21 21:29:05       done

3       2020-07-21 21:35:05       failed

4       2020-07-22 10:29:05       done

5       2020-07-22 10:35:05       done

6       2020-07-22 10:37:05       failed

7       2020-07-22 10:39:05       failed

8       2020-07-22 10:40:05       done

使用 laravel 查询我想要这样的结果


array(

    [0]=>array(

        'date'=>'2020-07-21',

        'failed'=>1

        'done'=>2

     ),

   [0]=>array(

        'date'=>'2020-07-22',

        'failed'=>2

        'done'=>3

     )

)

我怎样才能做到这一点?


我努力了


$record=DB::table('my_table_name')

                    ->select(

                            DB::raw("DATE_FORMAT(date_column, 'Y-m-d') as date"),

                            DB::raw("SUM(status= 'failed') as failed"),

                            DB::raw("SUM(status= 'done') as done"),

                            )

                    ->where('date_column','>=','2020-07-21 00:00:00')

                    ->where('date_column','<=','2020-07-22 23:59:59')

                    ->groupBy(DB::raw("DATE_FORMAT(date_column, 'Y-m-d')"))

                    ->get();

提前致谢


SMILET
浏览 92回答 1
1回答

富国沪深

您的代码似乎没问题,但使用日期格式“Ymd”而不是“%Y-%m-%d”,这是错误的。为了解决您的问题,请使用以下查询:DB::table('my_table_name')::select( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DB::raw("DATE_FORMAT(date_column,&nbsp;'%Y-%m-%d')&nbsp;as&nbsp;date"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DB::raw("SUM(name=&nbsp;'failed')&nbsp;as&nbsp;failed"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DB::raw("SUM(name=&nbsp;'done')&nbsp;as&nbsp;done"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->whereDate('date_column','>=','2020-07-21') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->whereDate('date_column','<=','2020-07-22') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->groupBy(DB::raw("DATE_FORMAT(date_column,&nbsp;'%Y-%m-%d')")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->get();
打开App,查看更多内容
随时随地看视频慕课网APP