Проверьте, изменился ли атрибут в событиях модели Laravel 5.5 - PullRequest
0 голосов
/ 26 мая 2019

Я видел, что есть функция с именем wasChanged(), где вы можете проверить, был ли атрибут изменен при обновлении. Не грязно, но было изменено и сохранено

Однако я пытаюсь проверить это в моей функции загрузки событий модели:

public static function boot()
{
    parent::boot();

    self::updated(function($appointment){

        if($appointment->wasChanged('appointment_date')) {
         // do something
        }

    });
}

Это никогда не работает для меня. Любые идеи, как я могу это проверить?

Функция isDirty имеет другое поведение, так как она используется для проверки, был ли атрибут отправлен в запросе.

Ответы [ 2 ]

1 голос
/ 26 мая 2019

После небольшого поиска я обнаружил, что есть полезная функция с именем getOriginal(), которая возвращает массив исходных значений атрибутов.

Так что мне просто нужно было получить доступ к своему атрибуту и ​​сравнить:

$original_date = $appointment->getOriginal()['appointment_date'];

if($appointment->appointment_date != $original_date) {

 ...

}

Ответ взят здесь

0 голосов
/ 26 мая 2019

U может проверить, возвращает ли метод save () значение true:

$object = new Model;
$object->attribute = $value;
if($object->save(){
 // attribute changed
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...