Итак, я хочу найти, что если значение 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.
Добавить условие сравнения, как показано ниже
$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')
Других решений пока нет …