where()


Условие where() можно указать с параметрами:

$query->where('status=1');

// или используя привязку параметров
$query->where('status=:status', [':status' => $status]);

$query->where('status=:status')->addParams([':status' => $status]);

// в виде массива
$query->where([
    'status' => 10,
    'type' => null,
    'id' => [4, 8, 15],
]);

Внутри where() можно указывать вложенные запросы

$userQuery = (new Query())->select('id')->from('user');

// ...WHERE `id` IN (SELECT `id` FROM `user`)
$query->where(['id' => $userQuery]);

Условие where() можно добавлять:

$query->where(['status' => $status]);

if (!empty($search)) {
    $query->andWhere(['like', 'title', $search]);
}

Условия могут быть фильтрами - т.е. они будут
подставляться только, если значения НЕ ПУСТЫ:

// $username и $email вводит пользователь
$query->filterWhere([
    'username' => $username,
    'email' => $email,
]);

Можно комбинировать: andWhere(), orWhere(), andFilterWhere(),  orFilterWhere()

Операнды для условия where():

* ['and', 'id=1', 'id=2']
* ['and', 'type=1', ['or', 'id=1', 'id=2']]
* ['between', 'id', 1, 10]
* ['not between', 'id', 1, 10]
* ['in', 'id', [1, 2, 3]]
* ['not in', 'id', [1, 2, 3]]
* ['like', 'name', 'tester']
* ['like', 'name', ['test', 'sample']]   // %test% and %sample%
* ['or like', 'name', ['test', 'sample']]   // %test% or %sample%
* ['not like', 'name', ['test', 'sample']]   // %test% and %sample%
* ['or not like', 'name', ['test', 'sample']]   // %test% or %sample%
* ['exists', \yii\db\Query] // param = subquery
* ['>', 'age', 10]  // возможно и другие сравнения