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.

0

Решение

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

$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')
1

Другие решения

Других решений пока нет …