Условие 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] // возможно и другие сравнения
Yii Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor