在 Yii QueryBuilder 中使用 BETWEEN AND 子句


Use BETWEEN AND Clause in Yii QueryBuilder

这段代码无法正常工作,我想使用 between and 子句检查开始和结束周期之间的period_id,但无法做到这一点

$return = Yii::app()->db->createCommand()
                            ->select('period_id')
                            ->from('SCHOOL_PERIODS')
                            ->where('school_id=:school_id', array(':school_id'=>$schoolId))
                            ->andWhere('syear=:syear', array(':syear'=>$schoolYear))
                            ->andWhere('ignore_scheduling IS NULL')
                            ->andWhere('period_id>:start', array(':start' => $startPeriod))
                            ->andWhere('period_id<:end', array(':end' => $maxPeriod))
                            ->order('sort_order asc')
                            ->queryAll();
        return $return;

尝试像这样在尖括号前后放置一个空格

period_id > :start

如果这仍然不起作用,请删除两行

->andWhere('period_id>:start', array(':start' => $startPeriod))
->andWhere('period_id<:end', array(':end' => $maxPeriod))

然后改用以下内容

->andWhere('period_id > :start AND period_id < :end', array(':start' => $startPeriod',':end' => $maxPeriod))

如果随后要使用 HAVING,请在分组下方添加此行。这意味着您可以从已运行的另一个查询中使用值。

->having('period_id > :resultfromOtherQueryStart AND period_id:resultFromOtherQueryEnd',array(':resultFromOtherQuery'=>$otherQueryStart,':otherQueryEnd'=>$otherQueryEnd))