Аудит Laravel - Как получить определенный столбец, используя метод Eloquent Model - PullRequest
0 голосов
/ 25 октября 2018

Я использую Laravel Auditing Package для отслеживания изменений в моих моделях.Я хочу получить определенный столбец внешнего ключа в своей первичной таблице перед записью событий (создать, обновить, удалить) в таблице аудита.

Существует способ, с помощью которого пакет помогает получить все атрибутывнешний ключ, он называется Audit Transformation, но он генерирует ошибку для меня при отображении подробностей в таблице. Я хочу знать, есть ли какой-либо красноречивый метод модели для получения нужной мне информации о столбце вместо использования getattribute() метод, который получает всю строку item_id.

Метод преобразования аудита

public function transformAudit(array $data): array
{

    if (Arr::has($data, 'new_values.item_id')) {
        $data['old_values']['item_name'] = Item::find($this->getOriginal('item_id'));
        $data['new_values']['item_name'] = Item::find($this->getAttribute('item_id'));
    }

    return $data;
}

Вот как он хранится вEphasis базы данных на item_name.

{"item_id":"1","qty_received":"2","delivered_by":"John",
"received_by":"Abi","supplier":"Stores","date":"2019-11-26","item_name":{"item_id":1,"item_name":"Toner","colour":"Black","status":"Active",
"created_at":"2018-10-25 17:55:26","updated_at":"2018-10-25 17:55:26"}}

И это схема таблицы элементов Item Schema

Так что в моем сценарии яВы хотите сохранить item_name как Toner, а не всю строку item_id Любое предложение будет приветствоваться, спасибо заранее.

1 Ответ

0 голосов
/ 25 октября 2018

Добавить ->item_name->item_name после функции Find.

 if (Arr::has($data, 'new_values.item_id')) {
    $data['old_values']['item_name'] = Item::find($this->getOriginal('item_id'))->item_name->item_name;
    $data['new_values']['item_name'] = Item::find($this->getAttribute('item_id'))->item_name->item_name;
}
...