1

我在堆栈中注意到我的查询没有正确执行,因为我的查询构建器中有多个 where 子句。所以我看了这篇文章Multiple call where in Yii Query builder

应用了我读过的内容,但查询仍然没有结合 where 语句。我究竟做错了什么?

            $command = Yii::app()->db->createCommand()
        ....
        ->where(array('in', 'u.id', $licenses), array('and', 'i.date_added > DATE_SUB(u.date_expired, INTERVAL  30 DAY)'));
        //->where(array('and', 'i.date_added > DATE_SUB(u.date_expired, INTERVAL  30 DAY)'));
        //->where(array('and', 'u.date_expired > CURDATE()'))
        ->group('u.id');

这些是 3 个单独的陈述,但我在阅读时将它们组合在一起,但结果仍然相同。只有 1 个 where 子句。

4

1 回答 1

5

你应该使用andWhere方法。此方法放置AND关键字,因此您只需要条件:

$command = Yii::app()->db->createCommand()
    ....
    ->where(array('in', 'u.id', $licenses));
    ->andWhere('i.date_added > DATE_SUB(u.date_expired, INTERVAL  30 DAY)');
    ->andWhere('u.date_expired > CURDATE()')
    ->group('u.id');
于 2013-09-07T08:12:09.237 回答