Где правильней указать условие? Через GET параметр передается условие по которому нужно фильтровать значение. Эти значения очищаются и сохраняются в модель, затем происходит получение данных используя эти условия. Где правильно указать условия(status, ko_from), в отдельных методах или оставить так? Метод модели:public function getActiveTransfers() { $criteria = new CDbCriteria(); $criteria->with = ['good', 'koFrom', 'koTo']; $criteria->condition .= 'status <> '.self::STATUS_RECD; if($this->status) $criteria->condition .= ' AND status ='.$this->status; if($this->ko_from) $criteria->condition .= ' AND ko_from ='.$this->ko_from; return $this->getCActiveDataProvider($criteria); }
В данном случае правильнее будет оставить условия в отдельных методах, чтобы код был более читаемым и поддерживаемым. Можно создать отдельные методы для проверки условий status и ko_from, например:
public function getActiveTransfers() { $criteria = new CDbCriteria(); $criteria->with = ['good', 'koFrom', 'koTo']; $criteria->condition .= 'status <> ' . self::STATUS_RECD; if ($this->status) { $criteria->condition .= $this->getStatusCondition(); } if ($this->ko_from) { $criteria->condition .= $this->getKoFromCondition(); } return $this->getCActiveDataProvider($criteria); } public function getStatusCondition() { return ' AND status =' . $this->status; } public function getKoFromCondition() { return ' AND ko_from =' . $this->ko_from; }
Это делает код более читаемым и структурированным, а также позволяет легче добавлять и изменять условия в будущем.
В данном случае правильнее будет оставить условия в отдельных методах, чтобы код был более читаемым и поддерживаемым. Можно создать отдельные методы для проверки условий status и ko_from, например:
public function getActiveTransfers() {$criteria = new CDbCriteria();
$criteria->with = ['good', 'koFrom', 'koTo'];
$criteria->condition .= 'status <> ' . self::STATUS_RECD;
if ($this->status) {
$criteria->condition .= $this->getStatusCondition();
}
if ($this->ko_from) {
$criteria->condition .= $this->getKoFromCondition();
}
return $this->getCActiveDataProvider($criteria);
}
public function getStatusCondition() {
return ' AND status =' . $this->status;
}
public function getKoFromCondition() {
return ' AND ko_from =' . $this->ko_from;
}
Это делает код более читаемым и структурированным, а также позволяет легче добавлять и изменять условия в будущем.