私はYii2フレームワークでAPIを作成しました。 しかし私は私のステートメントでOR条件を使用する方法を知らない。Yii2クエリOR条件1列の複数の値
例: BMWまたはDODGEというブランド名ですべての車を取得しますか?
私は次のことを試してみた:
$query = Car::getCar($lang)
->where(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
->all();
しかし、これは動作しません。 m.brandには1つの値しか使えません。
ので:
$query = Car::getCar($lang)
->where(['m.brand' => 'BMW'])
->all();
作品だけで罰金。
いくつかの方法で入れようとしましたが、私はこれを動作させません。
誰かが私が間違っていることを知っていますか?
EDIT getCar方法のようなものを返す:
(new Query())->select(['a.auto_id'])->from('auto_new a')
EDIT 2 が、それはで動作するようになった:
$query->andWhere(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
これは静的メソッド 'getCar()'が 'ActiveQuery'インスタンスを返す限り動作します。 – Bizley
@Bizley getCarが返すものを追加しました。私はそれが問題だとは思わない。なぜなら、単一の列のパラメータがうまく動作するからである。 –
これは奇妙で、うまくいくはずだ。 「私はこれを動作させない」という意味はどういう意味ですか?エラーがありますか、または予期した結果が表示されません。 ' - > all();'を ' - > createCommand() - > rawSql;に置き換えて出力を調べることで、このバージョンを'または 'でテストしてください。 – Bizley