|
|
|
@ -187,6 +187,12 @@ $query->where(['status' => null]);
|
|
|
|
|
WHERE (`status` IS NULL) |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
`IS NOT NULL` が必要なときは次のように書くことが出来ます。 |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
|
$query->where(['not', ['col' => null]]); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
次のように `Query` オブジェクトを使ってサブクエリを作ることも出来ます。 |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
@ -443,7 +449,7 @@ foreach ($query->each() as $user) {
|
|
|
|
|
`batch()` または `each()` メソッドに最初のパラメータを渡すことによって、バッチサイズを変更することが出来ます。 |
|
|
|
|
|
|
|
|
|
[[yii\db\Query::all()]] とは対照的に、バッチクエリは一度に 100 行のデータしかメモリに読み込みません。 |
|
|
|
|
データを処理した後、すぐにデータを破棄するようにすれば、バッチクエリの助けを借りてメモリ消費量を限度以下に抑えることが出来ます。 |
|
|
|
|
データを処理した後、すぐにデータを破棄するようにすれば、バッチクエリの助けを借りてメモリ消費量を削減することが出来ます。 |
|
|
|
|
|
|
|
|
|
[[yii\db\Query::indexBy()]] によってクエリ結果をあるカラムでインデックスするように指定している場合でも、バッチクエリは正しいインデックスを保持します。 |
|
|
|
|
例えば、 |
|
|
|
|