На мой взгляд, это не способ решения проблемы такого типа (в контроллере).
То, что вы на самом деле хотите сделать, - это зарегистрировать прослушиватель событий, который будет вести журнал при обновлении вашей красноречивой модели. Есть и модели "наблюдатели".
Существует библиотека, которая уже обрабатывает особенности того, как заставить все это работать вместе, которая, по крайней мере, может служить примером того, как все настроить, но уже способна делать то, что ты хочешь.
Вот специальная документация по " Ведение журнала событий модели ."
Приятной особенностью использования Spatie Logger является то, что он проявился как простая черта, которую вы добавляете в свою модель. Вот пример кода из документации:
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
class NewsItem extends Model
{
use LogsActivity;
protected static $logAttributes = ['*'];
protected static $logAttributesToIgnore = ['text'];
protected static $logOnlyDirty = true;
}
Это иллюстрирует несколько различных настроек, в том числе использование $ logOnlyDirty, который будет регистрировать только измененные элементы, по сравнению с настройкой по умолчанию предоставления полного до / после объекта. Вы также можете игнорировать некоторые атрибуты, которые вас не интересуют (например, отметки времени или вычисленные поля.