Yii2.0 中国語開発ガイド - Where 条件クエリの完全な分析。
where は、Yii モデルでクエリを実行するときに不可欠です。
メソッドが
として宣言されている場所
パラメータの$conditionタイプは文字列または配列
1です。String
Stringは最も単純で、
などのSQLのwhere条件に従って直接記述するだけです。
2. 配列
配列の場合、2つの書き方があります。
- 名前と値の形式の辞書配列: ['column1' => value1, 'column2' => value2, ...]
- 論理演算子の形式: [operator, operand1, operand2, ...]
最初の書き方:
value が文字列または数値などの場合、生成される条件文の形式は column1=value1 AND column2=value2 AND....
['タイプ' => 'ステータス' => 2
//生成
(タイプ = 1) AND (ステータス = 2)
値が配列の場合、SQL の
IN ステートメントが生成されます。
['id' => [1, 2, 3], 'ステータス' => 2]
//生成
(id IN (1, 2, 3)) AND (ステータス = 2)
値が Null の場合、
Is Null ステートメントが生成されます。
['ステータス' => null]
//生成
ステータスはNULLです
2 番目の書き方では、さまざまな演算子に基づいてさまざまな SQL 条件が生成されます。
- and: は AND を使用してすべてのオペランドを接続します。のように
['と', 'id=1', 'id=2']
// を生成する
id=1 AND id=2
オペランドも配列の場合、次のような形式の文字列に変換されます。
['and', 'type=1', ['or', 'id=1', 'id=2']]
//生成
type=1 AND (id=1 OR id=2)
注: このメソッドは値を参照したりエンコードしたりしません。
- or: は、オペランドを接続するために OR が使用されることを除いて、and に似ています。
- between: 最初のオペランドは列の名前で、2 番目と 3 番目のオペランドは範囲の最小値と最大値です。のように
['間', 'id', 1, 10]
//生成
1と10の間のID
- not between:はbetweenと似ています。
- in: 最初のオペランドは列または DB 式で、2 番目のオペランドは次のような配列です。
['in', 'id', [1, 2, 3]]
//生成
ID IN (1, 2, 3)
注: このメソッドは列を参照し、配列内の値もエンコードします。
- not in: は、上記の in と似ています。
- の例: 最初のオペランドは列または DB 式で、2 番目のオペランドは文字列または配列です。
[「いいね!」、「名前」、「テスター」]
//生成
「%tester%」のような名前
値が配列の場合、複数の like ステートメントが生成され、
AND を使用して接続されます。のように
[「いいね」、「名前」、[「テスト」、「サンプル」]]
//生成
「%test%」のような名前と「%sample%」のような名前
注: このメソッドは列を参照し、配列内の値もエンコードします。
場合によっては、% を自分で処理する必要がある場合は、3 番目のパラメータを使用できます。
[「いいね!」、「名前」、「%テスター」、false]
//生成
「%tester」のような名前
- or like: は like に似ていますが、2 番目のパラメーターが配列の場合に、複数の like ステートメントを接続するために or が使用される点が異なります。
- 好きではない:は好きに似ています。
- または好きではない:はに似ているか、またはに似ています。
http://www.bkjia.com/PHPjc/1043455.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1043455.html技術記事 Yii2.0 中国語開発ガイド - Where 条件クエリの完全な分析。Yii モデルでクエリを実行する場合、Where は不可欠です。メソッドが次のように宣言されている場所 パラメータ $condition の型は word...