Я объясняю свою проблему примером.Класс наблюдателя модели Laravel не работает при обновлении с помощью построителя запросов
Мой класс модели User
и класс наблюдателя UserObserver
.
Я добавил код в updated
методы UserObserver
, который будет выполнять каждый раз используется User
модели update
функции. Например, метод updated
в UserObserver
(см. Ниже) должен быть вызван при каждом обновлении в записи User
.
class UserObserver{
function updated($userModel)
{
//Send mail code
}
}
Код в UserObserver
работ, когда User
обновление данных, как показано ниже:
User::find(2)->update(['name'=>'Update Name']);
Однако код в UserObserver
не будет работать, когда User
данные обновляются следующим образом:
User::where('id', 2)->update(['name'=>'Update Name']);
Когда я отладки, я могу понять, что User::find(2)
возвращение User
м odel и User::where('id', 2)
вернет объект Builder
. Итак, как я могу использовать наш метод класса наблюдателя независимо от того, обновляется ли он с использованием объекта модели User
или объекта Builder
?
Проблема заключается в том, что у меня есть существующее приложение, некоторые модели обновляются, как User::where('id', 2)->update(['name'=>'Update Name']);
. Трудная задача - изменить инструкцию обновления до User::find(2)->update(['name'=>'Update Name']);
.
Может быть, стоит добавить код для обновления в UserObserver в вашем вопросе и код, который связывает два класса. – haakym