-
Yii2. Как добавить в OR несколько условий с LIKE?
Возможна ситуация, когда нужно делать запрос с LIKE-поиском по нескольким полям, но при этом с условием OR. В этой статье пример реализации на Yii2 данной задачи. Всё, на самом деле, просто. Приведу пример: $query->andFilterWhere([ ‘or’, [‘like’, ‘first_name’, $nameFromQuery], [‘like’, ‘last_name’, $nameFromQuery], [‘like’, ‘middle_name’, $nameFromQuery] ]); Выше привел конструкцию, которая при условной поисковой фразе «Ивано» сгенерирует […]
-
Yii2. Как сделать deleteAll с условием NOT IN?
Удаление записей в Yii2 при помощи метода deleteAll и условии not in выглядит не очень очевидным и столкнувшись с этой задачей, решил написать короткую заметку с примером реализации. Секрет в том, что условие надо задавать в виде массива. Приведу пример: SomeModel::deleteAll([ ‘AND’, ‘post_id’ => $id, [‘not in’, ‘id’, $arrayOfIds], ]); Этот пример сгенерирует следующий запрос […]
-
Yii2. Как получить название базы данных?
Сегодня стала очень простая задача для которой, как оказалось нет нативного решения в коробке Yii2. Но, ничего страшного и вариант, как получить название базы данных в Yii2 был найден на просторах Сети. Всего-то навсего следует написать вот такую функцию: private function getDsnAttribute($name, $dsn) { if (preg_match(‘/’ . $name . ‘=([^;]*)/’, $dsn, $match)) { return $match[1]; […]
-
Yii2. Как установить значение по умолчанию для атрибута.
Вопрос, как установить значение по умолчанию для атрибута модели встает очень регулярно, при этом ввиду различных особенностей выполнения конкретного проекта оптимальное решение может быть разным. Приведу пример решения, которым пользуюсь сам и которое отлично подходит к любому приложению. Все, что вам потребуется переопределить метод beforeSave, в котором укзаать значение. public function beforeSave($insert) { if ($insert) […]
-
Yii2. Как указать алиас в joinWith?
Для удобства работы с запросом, фильтрации и сортировки в сложных реляционных запросах удобно использовать joinWith. Но здесь иногда возникают трудности ввиду не очевидного присвоения алиаса для подключаемой таблицы. На самом деле же все достаточно просто. Исходя из ответа qiang на github: joinWith([ ‘customer’ => function ($q) { $q->from(‘customer cu’); }, ]) Таким образом мы можем […]
-
Yii2. Как указать условие NOT NULL?
Приведу простой, но не очень очевидный ответ на вопрос, как следует указывать условие NOT NULL при работе с query builder. Код, на самом деле, очень прост. $post = Post::find() ->where([‘not’,[‘content’=>null]]) ->all(); Данный код сгенерирует именно тот запрос, что нам нужен и выберет записи, у которых content не равен NULL. Удачи!
-
Yii2. Как статически вызвать методы родителя?
Буквально сегодня довелось писать небольшое поведение (behavior) и, в процессе работы, вспомнил о интересном моменте, который, в свое время, занял много времени для поиска правильного решения. Речь идет о необходимости обратится к модели-родителю, от имени которой вызывается само поведение. Итак, несмотря на простоту решения ответ на вопрос не лежит нигде на поверхности интернета, поэтому приведу […]