2017-01-14 17 views
2

私は2つのカラムusedmaxUsedを持っており、これらのカラムを比較したいと思います。andWhereメソッドで2つの列を比較するにはどうすればよいですか?

これは私のコード(Yii2)です:

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

実行されるSQLは次のとおりです。

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

この文ではそこにはエラーはありませんが、SQLクエリが正しくありません。私は、文字列としてMAXUSE no 'をMAXUSE' を比較したい

私はこれが必要ですか。この(引用独立したデータベース)

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

あなたがエラーを取得するのですか?この文の –

+0

にはエラーはありませんが、SQL問合せは正しくありません。私は文字列としてmaxUse 'maxUse'を比較したいと思います。 –

答えて

0

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

この

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

EDITしてみてください配列の最初の値に( 'と'、 'or')を使用できます。条件は再帰的に扱われる。

$query->andWhere(['OR', ['AND', 
           ['oprator', 'attribute', 'value'], 
           ['oprator2', 'attribute2', 'value2'] 
         ], ['attribute3' => 'value3']]) 
私はどんな解決策を見つけると、最終的には、生のテキストで、それを解決することができませんでした
+0

今、私はこのエラーを受け取ります:演算子 'USED' <'MAXUSE'は2つのオペランドを必要とします。 –

+0

引用符とカラム名を追加しました。もう一度 – Ripper

+0

erroを試してください: 'Operator '[[USED]] <[[MAXUSE]]'は2つのオペランドを必要とします。 –

0

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

私はあなたが( 'と'、 'または')を使用することができます知っているが、値なし、私は2つの列を比較したい。 –

関連する問題