@SoloMidPlzD

Как логировать изменения с возможностью откатить?

допустим есть простая схема many-to-many
articles, article_tags, tags

Нужно чтоб каждое изменение логировалось + возможность откатки в 1-3 клика

изменение полей article, и связаних с ней тегов.

Допустим была запись:
article.title = "hello world1", article.body = "Текст записи1", article.published_at = 2016-11-20, article.user_id = 1;
связка article_tags (1,1), (1,2)
Другой пользователь изменил статью и она уже
article.title = "hello world2", article.body = "Текст записи2", article.published_at = 2016-11-20, article.user_id = 3;
связка article_tags (1,1), (1,3), (1,4)
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
UksusoFF
@UksusoFF
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
изменение чего?
Ответ написан
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Изменения чего Вы хотите логировать? Базы или файлов? Если файлов - то GIT.

Если базы, то миграции или, возможно, Git+миграции.

Если ещё и данных в БД, то бекап БД (если база небольшая, то бекап в GIT).
Ответ написан
Urichalex
@Urichalex
Кратко о себе)
Например держать 2 таблицы
currentItem
itemHistory

Перед записью в currentItem его содержимое новой записью в itemHistory
И откатывать так же
Ответ написан
Комментировать
DJZT
@DJZT
Laravel - code for you
Тут встаёт вопрос целостности данных. Если вы удалите один из связанных объектов, который использовался в прошлом - то уже невозможно будет восстановить это связь по журналу. А так я бы хранил всё в одной таблице с номером ревизии. То есть каждый раз дублировал бы связь при её изменении и написал бы глобальный скоуп для выборки этой связи.
Ответ написан
Комментировать
Может, будет удобнее повесить триггер на обновление/изменение таблицы, который будет писать "старые" значения в «таблицу архивных значений»?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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