1. paginate和group by报错,代码如下,月份分组
 
        $page = intval($where['page']);
        $limit = intval($where['limit']);
        $start_time = $where['start_time'];
        $end_time = $where['end_time'];
        $query = Db::table('eb_bonuslistlog')
            ->field('DATE_FORMAT(create_time,"%Y-%m") as date,SUM(money) as total_money,COUNT(*) as total_number')
            ->group('date')
            ->order('date desc');
        if ($start_time && $end_time) {
            $query->whereTime('create_time', 'between', [date('Y-m-01 00:00:00', strtotime($start_time)), date('Y-m-t 23:59:59', strtotime($end_time))]);
        }
  $list = $query->paginate(15);
        return $list;
 

 
 
2. 第一种写法,group by分组后使用page分页, 月份分组
 
        $page = intval($where['page']);
        $limit = intval($where['limit']);
        $start_time = $where['start_time'];
        $end_time = $where['end_time'];
        $query = Db::table('eb_bonuslistlog')
            ->field('DATE_FORMAT(create_time,"%Y-%m") as date,SUM(money) as total_money,COUNT(*) as total_number')
            ->group('date')
            ->order('date desc');
        if ($start_time && $end_time) {
            $query->whereTime('create_time', 'between', [date('Y-m-01 00:00:00', strtotime($start_time)), date('Y-m-t 23:59:59', strtotime($end_time))]);
        }
        $list = $query->page($page, $limit)
            ->select()
            ->toArray();
        return $list;
 
 3..第二种写法,group by分组后使用paginate分页,月份分组
 
        $page = intval($where['page']);
        $limit = intval($where['limit']);
        $start_time = $where['start_time'];
        $end_time = $where['end_time'];
        $query = Db::table('eb_bonuslistlog')
            ->field('DATE_FORMAT(create_time,"%Y-%m") as date,SUM(money) as total_money,COUNT(*) as total_number')
            ->group('date')
            ->order('date desc');
        if ($start_time && $end_time) {
            $query->whereTime('create_time', 'between', [date('Y-m-01 00:00:00', strtotime($start_time)), date('Y-m-t 23:59:59', strtotime($end_time))]);
        }
        $buildSql = $query->buildSql();
        $list = Db::table($buildSql)->alias('bs')->paginate(15);
        return $list->toArray();
 
4. group by分组后使用paginate分页,按天分组
 
  public function getZsyjDayReportStat(array $where)
    {
        $page = intval($where['page']);
        $limit = intval($where['limit']);
        $start_time = $where['start_time'];
        $end_time = $where['end_time'];
        // thinkphp中分页paginate和group by一起使用时代码异常,换下面写法
        $query = Db::table('eb_bonuslistlog')
            ->field('DATE_FORMAT(create_time,"%Y-%m-%d") as date,SUM(money) as total_money,COUNT(*) as total_number')
            ->group('date')
            ->order('date desc');
        if ($start_time && $end_time) {
            $query->whereTime('create_time', 'between', [$start_time . ' 00:00:00', $end_time . ' 23:59:59']);
        }
        $buildSql = $query->buildSql();
        $list = Db::table($buildSql)->alias('bs')->paginate(15);
        return $list->toArray();
    }