MySQl / Laravel: проверьте измененный столбец перед обновлением записи - PullRequest
0 голосов
/ 02 октября 2019

У меня есть таблица abc с несколькими полями.

Мне нужно выбрать столбец или столбцы (кроме: id, created_at & updated_at), которые были обновлены и сохраненысуществующее значение вместе с именем столбца в таблице logs, соответствующей выбранной записи, перед обновлением в этой таблице.

Например:
Таблица: abc

id: 1
name: 'Old name'
mobile: 9876543210
address: 'Abc-123'
...
created_at: 'Sometime'
updated_at: 'Sometime'

update:
    name: 'new name'
    mobile: 1234567890

Таблица: журналы должны иметь

column | value
name   | Old name

column | value
mobile | 9876543210

Однако я могу сохранить всю запись в таблице, что будет намного проще, но это будет простотрата пространства / памяти. Кроме того, будет трудно определить, какое значение было точно изменено в этот момент времени без какого-либо алгоритма.

1 Ответ

0 голосов
/ 02 октября 2019

isDirty() метод используется, чтобы проверить, была ли изменена модель или любой из заданных атрибутов.

он вернет true, если имя изменено: $model->isDirty('name')

Вы также можете получить старое значение, используя getOriginal() метод

Ex  : $old_name = $model->getOriginal('name');

Ссылка: https://laravel.com/api/master/Illuminate/Database/Eloquent/Model.html#method_isDirty

...