Станислав Почепко: я думаю, единственный вменяемый способ в таком раскладе - это либо миграции ларавеля, либо дамп БД без данных (дамп структуры) в GIT-репозиторий. В принципе, если без данных, думаю миграции отлично подойдут.
Сначало у пользователя было 5 избранных документов, а потом он выбрал 28 избранных. И тут нужна история, что раньше у него было их пять. Или аналогично журнал изменений тегов к статье. Было 1,2,3, 7 а стало 5,3,2,8,9 а потом 4,3. И надо как-то это всё записать в журнал
Станислав Почепко: Тогда это уже целиком базу дампить нужно, я думаю, вместе с данными. Можно в репозиторий... Другое логирование я себе едва ли представляю... Хотя, можно конечно конечно, ковырять лог самой БД, но она и так и эдак его ведёт, хочет того пользователь или нет...
Тут встаёт вопрос целостности данных. Если вы удалите один из связанных объектов, который использовался в прошлом - то уже невозможно будет восстановить это связь по журналу. А так я бы хранил всё в одной таблице с номером ревизии. То есть каждый раз дублировал бы связь при её изменении и написал бы глобальный скоуп для выборки этой связи.