addBetweenCondition в YII

ТАК Я хочу найти, что если значение x выходит между значениями 2 столбцов или нет, для этого я запустил запрос в phpmyadmin:

Обычный подход :-

SELECT * FROM `traits_versions` WHERE 16 BETWEEN `trait_value_lower` and `trait_value_upper` and `style_id` = 1 

и это дает мне прекрасный результат. Но когда тот же подход я хочу найти в YII, он не работает и выдает ошибку sql:

Приблизительно YII :-

    $details = array();
        $criteria = new CDbCriteria();
        $criteria->addCondition('style_id='.$style_id);
        $criteria->addCondition('version='.$version);
$criteria->addBetweenCondition($style_contribution,$this->trait_value_lower,$this->trait_value_upper);
        $trait_details= $this->find($criteria);

Когда я отлаживаю запрос в журнале, он отображается в случае yii:

SELECT * FROM `traits_versions` `t` WHERE ((style_id=1) AND (version=1)) AND (16 BETWEEN NULL AND NULL) LIMIT 1

Почему он дает значение NULL в запросе, когда я передаю в нем имя столбца. Поэтому, пожалуйста, подскажите, где я ошибаюсь в yii.


person Harshal Mahajan    schedule 13.10.2014    source источник
comment
Вы пытались повторить $this-›trait_value_lower, чтобы убедиться, что там действительно правильное значение?   -  person Jap Mul    schedule 14.10.2014
comment
@jagsler да, это правильное значение.   -  person Harshal Mahajan    schedule 14.10.2014


Ответы (1)


Добавьте условие сравнения, как показано ниже.

$criteria->compare('trait_value_lower', 16, false, '>');
$criteria->compare('trait_value_upper',16, false, '<');

вместо между условием

$criteria->addBetweenCondition($style_contribution,$this->trait_value_lower,$this->trait_value_upper);

потому что между условием будет применяться к одному столбцу в соответствии с документом Yii.

public static addBetweenCondition(string $column, string $valueStart, string $valueEnd, string $operator='AND')
person Irfan Ali    schedule 14.03.2017