Laravel 审计 - 如何使用 Eloquent 模型方法获取特定列
Laravel Auditing - How To Get Specific Column Using Eloquent Model Method
我正在使用 Laravel 审计包来跟踪我的模型的变化。
在审计 table.
中记录事件(创建、更新、删除)之前,我想在主 table 中获取外键的特定列
包有一种方法可以帮助获取外键的所有属性,它被称为审计转换,但它在 table 中显示详细信息时为我生成错误我想知道是否有任何eloquent 模型方法来获取我需要的特定列信息,而不是使用 getattribute()
方法获取 [=15= 的整行].
审计转换方法
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"}}
这是项目 table 架构
所以在我的场景中,我想将 item_name
存储为 Toner
而不是整个item_id
行
欢迎任何建议,提前致谢。
在查找功能后添加->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;
}
我正在使用 Laravel 审计包来跟踪我的模型的变化。 在审计 table.
中记录事件(创建、更新、删除)之前,我想在主 table 中获取外键的特定列包有一种方法可以帮助获取外键的所有属性,它被称为审计转换,但它在 table 中显示详细信息时为我生成错误我想知道是否有任何eloquent 模型方法来获取我需要的特定列信息,而不是使用 getattribute()
方法获取 [=15= 的整行].
审计转换方法
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"}}
这是项目 table 架构
所以在我的场景中,我想将 item_name
存储为 Toner
而不是整个item_id
行
欢迎任何建议,提前致谢。
在查找功能后添加->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;
}