orderBy('process_statistics.process_id','DESC') ->has('process'); if ($params["owner_id"] ?? false){ $owner_id=$params["owner_id"]; $query=$query->whereHas('process',function (Builder $builder)use($owner_id){ $builder->where('owner_id',$owner_id); }); unset($params["owner_id"]); } if ($params["code"] ?? false){ $code=$params["code"]; $query=$query->whereHas('process',function (Builder $builder)use($code){ $builder->where('code','like',$code."%"); }); unset($params["code"]); } if ($params["status"] ?? false){ $status=$params["status"]; $query=$query->whereHas('process',function (Builder $builder)use($status){ $builder->where('status',$status); }); unset($params["status"]); } $columnQueryRules=[ 'started_at' => ['startDate' => ' 00:00:00'], 'ended_at' => ['endDate' => ' 23:59:59'], 'process_id' => ['multi' => ','], ]; $query = app(QueryService::class)->query($params,$query,$columnQueryRules,"process_statistics"); return $query; } public function paginate(array $params){ return $this->conditionQuery($params)->paginate($params["paginate"] ?? 50); } public function getSql(array $params){ return $this->conditionQuery($params)->selectRaw('process_statistics.*') ->leftJoin('processes','process_statistics.process_id','processes.id') ->selectRaw('processes.code process_code,processes.unit_price process_unit_price,processes.amount process_amount,processes.completed_amount process_completed_amount,processes.status process_status') ->leftJoin('owners','processes.owner_id','owners.id') ->selectRaw('owners.name owner_name') ->leftJoin('process_methods','processes.process_method_id','process_methods.id') ->selectRaw('process_methods.name process_method_name') ->sql(); } }