我在我的堆栈中注意到我的查询没有正确执行,因为我在querybuilder中有多个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子句。
答案 0 :(得分: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');