Yii2 Как сохранять ActiveRecord через хранимую процедуру Table API?
Посоветуйте, пожалуйста, способ, если это вообще целесообразно, как использовать Active Record в условиях, когда запись в таблицу производится через хранимую процедуру, а не прямым оператором INSERT или UPDATE. Т.е. часть логики выполняется на стороне СУБД. Пока вижу только вариант переопределять у модели методы insert и update и хардкодить в них вызовы хранимых процедур. Но это видится мне варварством из разряда "а зачем тогда AR?". Вдруг есть альтернативы.
Заранее спасибо.
Наличие логики в СУБД само по себе не правильно. Поэтому если можете избежать этого - избегайте. Если же все таки такой ситуации избежать не получается (всякие случаи бывают ... ) тогда у Вас есть два варианта решения:
1. Если у Вас AR не содержит особой логики и запросов к БД тогда реализуйте отдельный класс-репозиторий который будет заниматься работой с БД, в том числе и сохранением
2. Если AR содержит какую-то логику или запросы - тогда только костылить и переопределять сохранение на уровне AR
Спасибо за ответ. Присутствие логики в СУБД обусловлено тем, что одна БД используется для нескольких приложений, только одним из множества которых является наше yii-powered.
Если не трудно, можете, пожалуйста, привести пример того, что вы подразумеваете под классом-репозиторием? Если я правильно вас понял, то это класс, который связывает таблицы БД с объектами приложения. вроде тех, что используются в ORM. Сначала я пробовал двигаться в этом направлении, но потом соблазнился на простоту написания моделей AR. И решил немного обхитрить систему:). Потому и интересуюсь, существует ли правильный и изящный способ это сделать.