public function search($tip, $data) { /** * @var EntityQuery $query */ $query = KursExtended::findTip($tip); $query->orderBy('least([[ochnoe_nachalo]], [[zaochnoe_nachalo]])'); if ($this->load($data) && $this->validate()) { if ($this->kategoriiSlushatelej) { $query->joinWith('kategoriiSlushatelejRel')->andWhere(['kategoriya_slushatelya.id' => $this->kategoriiSlushatelej]); } $query->andFilterWhere(['and', ['like', 'kurs.nazvanie', $this->nazvanie], ['kurs.rukovoditel' => $this->rukovoditel], ['kurs.raschitano_chasov' => $this->chasy], ['kurs.plan_prospekt_god' => $this->planProspektGod]]); if ($this->nachalo || $this->konec) { $nach = self::dateToQuotedSql($this->nachalo, true); $kon = self::dateToQuotedSql($this->konec); $query->andWhere("(coalesce(least(ochnoe_nachalo, zaochnoe_nachalo),'-infinity') <= {$kon})" . " and ({$nach} <= coalesce(greatest(ochnoe_konec, zaochnoe_konec),'infinity'))"); } } return new ActiveDataProvider(['query' => $query, 'sort' => false]); }