30 июня 2018 г., 0:12:13 Yii2 yii2 select for update active record 7 Комментариев
Недавно пришлось тряхнуть стариной и вспомнить, как работать с Yii... Задача предельно проста: добавить SELECT FOR UPDATE
. Но, задача не проста для Yii2, особенно, если уже долгое время работаешь с Doctrine
...
Оф. репозиторий фреймворка нам сообщает, что из коробки такой возможности нет и что решать данную проблему нужно самому.
Так же, есть расширение, которое не имеет какого-то смысла вообще, т.к. суть работы SELECT FOR UPDATE
не реализована.
Еще, есть вот такое, но я его особо не смотрел, вроде рабочее. Если кто-то тестил и юзал - пишите в комменты.
Дак что же делать для тех, кто хочет просто применить SELECT FOR UPDATE
? Решение очень простое! Нужно всего лишь...
использовать yii\db\ActiveRecord::findBySql()
!
Пишем метод в модели:
public static function findOneForUpdate(int $id): ?ActiveRecord { $sql = self::find() ->where(['id' => $id]) ->createCommand() ->getRawSql(); return self::findBySql($sql . ' FOR UPDATE')->one(); }
И все!
Комментарии [7]
Новый комментарий