CActiveDataProvider, criteria и связанные таблицы

Уже исправленные репорты или принятые предложения
Закрыто
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

CActiveDataProvider, criteria и связанные таблицы

Сообщение Professor »

У меня вот такой поиск

Код: Выделить всё

    public function search() {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.

        $criteria = new CDbCriteria;


        $condition = array();
        $params = array();


        if (isset($this->bailValue)&&$this->bailValue != -1) {
            $condition[] = "bail2.id=:bailValue";
            $params[":bailValue"] = $this->bailValue;
        }

        if (isset($this->currencyValue)&&$this->currencyValue != -1) {
            $condition[] = "currency.id=:currencyValue";
            $params[":currencyValue"] = $this->currencyValue;
        }

        if (isset($this->purposeLoanValue)&&$this->purposeLoanValue != -1) {
            $condition[] = "purposeLoan.id=:purposeLoanValue";
            $params[":purposeLoanValue"] = $this->purposeLoanValue;
        }

        if (isset($this->consideredIncomeValue)&&$this->consideredIncomeValue != -1) {
            $condition[] = "consideredIncome.id=:consideredIncomeValue";
            $params[":consideredIncomeValue"] = $this->consideredIncomeValue;
        }

        if (isset($this->typesBets)&&$this->typesBets != -1) {
            $condition[] = "t.typesBets=:typesBets";
            $params[":typesBets"] = $this->typesBets;
        }
        if (isset($this->sumCredit)&&$this->sumCredit != -1) {
            $condition[] = "t.sumCredit>=:sumCredit";
            $params[":sumCredit"] = $this->sumCredit;
        }


        $criteria->addCondition($condition, 'AND');
        $criteria->params = $params;
        $criteria->with = array("bets", "bail2", "currency", "purposeLoan", "consideredIncome");

        return new CActiveDataProvider(get_class($this), array(
            'criteria' => $criteria,
            'pagination'=>array("pageSize"=>50)
        ));
    }
 
Дык вот он не работает из за CActiveDataProvider.
Там что то происходит изменяя критерии,
Я в классе CActiveDataProvider, в функции fetchData заменил

Код: Выделить всё

return $this->model->findAll($criteria); 
на

Код: Выделить всё

return $this->model->findAll($this->criteria); 

Понятия не имею на что это влияет, кроме того что теперь будут использоваться те критерии которые я сам поставил, и того факта, что теперь все работает.
Пожалуйста посмотрите, и если это действительно ошибка, а не мои кривые руки, то исправьте.
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: CActiveDataProvider, criteria и связанные таблицы

Сообщение Professor »

На что влияет я понял =) накрылся пагинатор и сортировка
Professor
Сообщения: 115
Зарегистрирован: 2010.11.25, 19:47
Контактная информация:

Re: CActiveDataProvider, criteria и связанные таблицы

Сообщение Professor »

Проблема решена. Ответ уже был на форуме.
В критерии нужно добавить
$criteria->together = true;
А я класс раскапывал =) Зато много нового узнал =)
Закрыто