0

我正在使用 Laravel 审计包来跟踪我的模型的更改。在记录审计表中的事件(创建、更新、删除)之前,我想在它的主表中获取外键的特定列。

包有一种方法可以帮助获取外键的所有属性,它称为审计转换,但是当在表中显示详细信息时它会为我生成一个错误我想知道是否有任何雄辩的模型方法来获取特定的列信息我需要而不是使用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;
}

这就是它在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 表模式 项目架构

因此,在我的场景中,我希望存储的item_name不是Toner整行item_id 任何建议都会受到欢迎,在此先感谢。

4

1 回答 1

1

->item_name->item_name在查找功能之后添加。

 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;
}
于 2018-10-25T19:04:21.347 回答