Ejemplo n.º 1
0
 public function search($params)
 {
     $query = Kurs::find()->joinWith('kategorii_slushatelej_rel')->joinWith('rukovoditel_rel')->groupBy(['kurs.id', 'fiz_lico.id'])->orderBy('kurs.id')->filterWhere(['extract(year from {{kurs}}.[[plan_prospekt_god]])' => ArrayHelper::getValue($params, 'year')]);
     if ($this->load($params) && $this->validate()) {
         $query->andFilterWhere(['like', 'lower(kurs.nazvanie)', $this->nazvanie])->andFilterWhere(['kategoriya_slushatelya.id' => $this->kategorii_slushatelej])->andFilterWhere(['tip' => $this->tip])->andFilterWhere(['rukovoditel' => $this->rukovoditel])->andFilterWhere(['raschitano_chasov' => $this->raschitano_chasov])->andFilterWhere(['>=', 'least([[ochnoe_nachalo]], [[zaochnoe_nachalo]])', $this->nachnutsya_posle])->andFilterWhere(['<=', 'greatest([[ochnoe_konec]], [[zaochnoe_konec]])', $this->zakonchatsya_do]);
     }
     $sort = new Sort(['attributes' => ['nazvanie', 'formy_obucheniya', 'raschitano_slushatelej', 'finansirovanie', 'tip', 'raschitano_chasov', 'rukovoditel_rel' => ['asc' => ['fiz_lico.familiya' => SORT_ASC, 'fiz_lico.imya' => SORT_ASC, 'fiz_lico.otchestvo' => SORT_ASC], 'desc' => ['fiz_lico.familiya' => SORT_DESC, 'fiz_lico.imya' => SORT_DESC, 'fiz_lico.otchestvo' => SORT_DESC]], 'vremya_provedeniya' => ['asc' => ['least([[ochnoe_nachalo]], [[zaochnoe_nachalo]])' => SORT_ASC], 'desc' => ['least([[ochnoe_nachalo]], [[zaochnoe_nachalo]])' => SORT_DESC]]]]);
     return new ActiveDataProvider(['sort' => $sort, 'query' => $query]);
 }