在我的数据库中我有类似的记录**my_table_name**id date_column status1 2020-07-21 00:29:05 done2 2020-07-21 21:29:05 done3 2020-07-21 21:35:05 failed4 2020-07-22 10:29:05 done5 2020-07-22 10:35:05 done6 2020-07-22 10:37:05 failed7 2020-07-22 10:39:05 failed8 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();提前致谢
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
您的代码似乎没问题,但使用日期格式“Ymd”而不是“%Y-%m-%d”,这是错误的。
为了解决您的问题,请使用以下查询:
DB::table('my_table_name')::select( DB::raw("DATE_FORMAT(date_column, '%Y-%m-%d') as date"), DB::raw("SUM(name= 'failed') as failed"), DB::raw("SUM(name= 'done') as done"), ) ->whereDate('date_column','>=','2020-07-21') ->whereDate('date_column','<=','2020-07-22') ->groupBy(DB::raw("DATE_FORMAT(date_column, '%Y-%m-%d')")) ->get();
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报
0/150
提交
取消