Как сохранить предыдущую запись в поле MySQL после редактирования в PHP Laravel 5.x?

AFAICS никто еще не разместил соответствующую часть документации :

Значения параметров по умолчанию оцениваются при выполнении определения функции. Это означает, что выражение оценивается один раз, когда функция определена, и что для каждого вызова используется одно и то же «предварительно вычисленное» значение. Это особенно важно для понимания, когда параметр по умолчанию является изменяемым объектом, таким как список или словарь: если функция изменяет объект (например, добавив элемент в список), значение по умолчанию изменяется. Обычно это не то, что было предназначено. Способ вокруг этого - использовать None как значение по умолчанию и явно проверить его в теле функции [...]

0
задан Script47 26 March 2019 в 13:08
поделиться

1 ответ

Я бы предложил создать новую таблицу с именем task_audit, а затем присоединить триггеры (INSERT, UPDATE и DELETE) к исходной таблице для обработки аудита, а не делать это через PHP. Эта статья хорошо объясняет триггеры.

Таблица task будет содержать все «текущие» данные, а таблица task_audit будет в основном копировать строки, когда происходят изменения, в идеале, вы также должны прикрепить столбец с именем audit_action, чтобы вы могли дифференцировать между действием, которое произошло (INSERT, UPDATE или DELETE). Вы бы прикрепили три триггера (для трех действий) к своей «основной» таблице, чтобы она записала измененные данные в таблицу аудита.

Используя этот метод, вы сможете легко перестроить задачу с любой даты, поскольку у вас есть все заархивированные данные, и ее также можно использовать для создания отчетов.

0
ответ дан Script47 26 March 2019 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: