list = LoyaltyCard::query()->select( 'created_at','created_at as date', DB::raw("COUNT(CASE WHEN is_validated = '1' THEN 1 END) as activated"), DB::raw("COUNT(CASE WHEN created_at <> '' THEN 1 END) as registered") ); if($params['date_start'] != null && $params['date_end'] != null) { $this->list->whereDate('created_at', '>=', $params['date_start']) ->whereDate('created_at', '<=', $params['date_end']); } $this->list->groupBy(DB::raw('DATE(created_at)')); $sorting = $params['sorting']; if(count($sorting) > 0) { $this->list = $this->list->orderBy($sorting['field'],$sorting['sort_order']); } if($export) return $this->list->get(); else return $this->list->paginate($params['page_size']); } }