如何在andWhere方法中比较两列?

时间:2017-01-14 11:02:47

标签: php yii2

我有两列usedmaxUsed,我想比较这些列。

这是我的代码(Yii2):

...->andWhere(['or', ['maxUse' => 0] , [ '<' , 'used' , 'maxUse' ]])..

执行的SQL是:

... AND ((`maxUse`=0) OR (`used` < 'maxUse'))...

在此语句中没有错误,但SQL查询不正确。我想要比较maxUse no&#39; maxUse&#39;作为字符串

我需要这个:

... AND ((`maxUse`=0) OR (`used` < `maxUse`))

3 个答案:

答案 0 :(得分:0)

试试这个

...->andWhere(['or', ['maxUse' => 0] , '`used` < `maxUse`'])

编辑:或者(数据库独立引用)

...->andWhere(['or', ['maxUse' => 0] , '[[used]] < [[maxUse]]'])

答案 1 :(得分:0)

您可以使用(&#39;和&#39;,&#39;或&#39;)作为任何数组的第一个值。条件递归地照顾。

$query->andWhere(['OR', ['AND', 
                                ['oprator', 'attribute', 'value'],
                                ['oprator2', 'attribute2', 'value2']
                        ], ['attribute3' => 'value3']])

答案 2 :(得分:0)

我找不到任何解决方案,最后通过原始文本解决了它:

...->andWhere('maxUse = 0 or used < maxUse');