Я использую плагин Laravel и Spatie в Laravel Activity Log. При вызове {{$activity->changes}}
создается коллекция со всеми attributes
, которые являются столбцами после изменения таблицы базы данных, и набором old
свойств перед изменением.
Пример
{
"attributes": {
"id":69,
"first_name":"Duane",
"last_name":"Bartell",
"dob":"1986-06-22",
"unique_id":"DuaneBartell1986-06-22",
"created_at":"2018-10-23 09:56:54",
"updated_at":"2018-10-27 08:41:24"
},
"old": {
"id":69,
"first_name":"Duane",
"last_name":"Bartell",
"dob":"1986-06-21",
"unique_id":"DuaneBartell1986-06-21",
"created_at":"2018-10-23 09:56:54",
"updated_at":"2018-10-23 09:56:54"
}
}
В этом примере я изменил dob
, который также изменил unique_id
и обновил отметку времени updated_at
. То, что я хочу сделать, это отображать только те атрибуты, которые были изменены в качестве функции изменений.
Также имейте в виду, что имена свойств / столбцов будут меняться от модели к модели. Нужно ли создавать какое-то решение для каждой отдельной модели, или я могу использовать что-то общее?
Редактировать
Кроме того, как лучше всего отобразить эту информацию на блейде? Я пытался {{$log->properties->attributes->id}}
, и это не сработало.
Редактировать 2: Дополнительная информация
Пример выше - это грубый результат вызова {{$activity->changes}}
в клинке. Плагин заявляет, что вызов этого будет возвращать массив, например, так:
[
'attributes' => [
'name' => 'original name',
'text' => 'Lorum',
],
'old' => [
'name' => 'updated name',
'text' => 'Lorum',
],
];
Я пытаюсь разными способами получить эти данные. Использование $attributes = array_get($log->properties, 'attributes.dob');
вернет правильный dob
, но по какой-то причине я не могу вытащить полную группу attributes
для сравнения с old
.