我正在使用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_name
存储为 Toner
,而不是 {{ 1}}
任何建议都将受到欢迎,谢谢。
答案 0 :(得分: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;
}