Где правильней указать условие? Через 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);
}

21 Авг 2019 в 07:03
142 +1
0
Ответы
1

В данном случае правильнее будет оставить условия в отдельных методах, чтобы код был более читаемым и поддерживаемым. Можно создать отдельные методы для проверки условий 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;
}

Это делает код более читаемым и структурированным, а также позволяет легче добавлять и изменять условия в будущем.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир