Почему функция изменений не возвращает изменения?

652/5000 Я использую в своем проекте Laravel 5 пакет https://github.com/spatie/laravel-activitylog в версии 2.3. У меня есть страница, на которой я просматриваю список действий и пытаюсь получить изменения, но возвращает пустой массив.

Это мой контроллер

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',
    ],
];

person Dariel Ramos Díaz de Villegas    schedule 11.01.2018    source источник


Ответы (1)


Поскольку он использует таблицу базы данных, я уверен, что это связано с тем, как Laravel позволяет связывать методы. Когда вы делаете $activity->changes(), он ожидает, что вы продолжите запрос. IE: $activity->changes()->where('etc', 1)->get() или что-то подобное. Таким образом, вызывая $activity->changes(), вы просто отправляете частичный запрос в Eloquent.

person N Mahurin    schedule 11.01.2018