我有两列used
和maxUsed
,我想比较这些列。
这是我的代码(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`))
答案 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');