Я хочу отслеживать изменения в laravel 5.3, используя диван / ревизионный пакет (или любой другой пакет, который выполняет то же действие)
Таблицы следующие:
item
id - primary key
title - text
item_fields
id - primary key
title - name of the field
item_field_values
item_id - foreign key to item(id)
field_id - foreign key to item_fields(id)
value - text
пример
item
1 - "John"
item_fields
1 - "email"2 - "last login time"3 - "balance"
item_values
1 - 1 - "[email protected]" // email
1 - 2 - "01.11.2016 11:30:03" // last login time
1 - 3 - "$38" // balance
Например, баланс пользователя изменяется одновременно с входом пользователя в систему, поэтому таблица ревизий будет содержать что-то вроде этого
"For user 1 last login time changed from 01.11.2016 11:30.03 to 02.11.2016 10:20:00""For user 1 balance changed from $38 to $36.50"
Это два отдельных поля, не связанных друг с другом. Если я хочу показать их как one change
, но не разные изменения, я не могу сделать это, потому что эти поля не имеют ссылок друг на друга.
Другой пример, новая строка добавлена в таблицу ревизий.
"For user 1 balance changed from $36.5 to $33"
Это одна разница.
Как я могу выбрать связанные изменения из разных полей как одну массовую ревизию? Там будет много item_fields (сотни). Я не могу положиться на created
время строк в revisions
Таблица.
Проблема со всеми связанными с ревизиями пакетами в laravel заключается в том, что они отслеживают изменения всех полей в одной модели, но в моем случае есть одна модель (item_field_values), но одна ревизия / версия может содержать много измененных строк.
Задача ещё не решена.
Других решений пока нет …