YII中的addBetweenCondition

时间:2014-10-13 11:49:58

标签: php sql yii between

所以我想找到如果值x在2列的值之间退出,那么我已经在phpmyadmin中运行了查询:

正常Approch: -

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

它给了我很好的结果。但是当我想在YII中找到相同的方法它没有运行并且给出sql错误时:

YII apprroch:

    $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中出错的地方。

1 个答案:

答案 0 :(得分: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 doc,条件将适用于一列。

public static addBetweenCondition(string $column, string $valueStart, string $valueEnd, string $operator='AND')