0

652/5000 我在我的 Laravel 5 项目中使用 2.3 版中的包https://github.com/spatie/laravel-activitylog。我有一个页面,我在其中浏览活动列表并尝试获取更改,但它返回一个空数组。

这是我的控制器

public function history($id) {
     $incidence = Incidence::find($id);
     $activities = Activit::where('subject_id', $incidence->id)->get ();
     return view('incidence.history', compact('activities'));
}

这是我的html页面

@foreach ($activities as $activity)
   <p> {{ $activity->created_at }} </p>
   <p> {{ $activity->changes() }} </p>
@endforeach

这是浏览器中的输出

图片

澄清我已经对同一记录进行了 4 次更新,这些记录反映在使用该包的数据库的 activity_log 表中。但我不明白为什么没有按照网站文档的说明显示更改的安排:

调用 $activity-> changes 将返回这个数组:

[
   'attributes' => [
        'name' => 'updated name',
        'text' => 'Lorum',
    ],
    'old' => [
        'name' => 'original name',
        'text' => 'Lorum',
    ],
];
4

1 回答 1

0

由于它使用数据库表,我确信这与 Laravel 允许链接方法的方式有关。当您执行 $activity->changes() 时,它希望您继续查询。IE: $activity->changes()->where('etc', 1)->get() 或类似的东西。因此,通过调用 $activity->changes() 您只是向 eloquent 发送部分查询。

于 2018-01-11T17:52:53.333 回答