【发布时间】:2018-10-29 15:12:26
【问题描述】:
我正在使用 Laravel 和 Spatie 的 Laravel 活动日志插件。调用{{$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}} 的原始返回。该插件声明调用它会返回一个 ARRAY,如下所示:
[
'attributes' => [
'name' => 'original name',
'text' => 'Lorum',
],
'old' => [
'name' => 'updated name',
'text' => 'Lorum',
],
];
我正在尝试不同的方法来提取这些数据。使用$attributes = array_get($log->properties, 'attributes.dob'); 将返回正确的dob,但无论出于何种原因,我似乎无法将attributes 的整个组拉出来与old 进行比较。
【问题讨论】: