0

Laravel 更新审计在我的 laravel eloquent 应用程序中的几个模型中不起作用。除了用户模型。以下是audit.php事件

'events' => [
    'created',
    'updated',
    'deleted',
    'restored',
],

 'strict' => false,
 'timestamps' => true,
 'console' => true,

我设置我的模型如下

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;

use Illuminate\Support\Arr;

class Order extends Model implements Auditable
    use \OwenIt\Auditing\Auditable;
    use HasFactory;



    protected $fillable = [
        'order_date',              
        'cancel_date',             
        'comment',
        'remark',
        'customer_auto_id',       
        'customer',   
   ];             

    public function transformAudit(array $data): array
    {
        Arr::set($data, 'recode_auto_id',  $this->attributes['id']);

        return $data;
    }

    public function customer()
    {
        return $this->hasOne(User::class, 'id', 'customer_auto_id');
    }
}

除了更新而不是审计之外,创建和删除在审计时工作正常。请让我知道解决方案。

4

1 回答 1

0

我找到了解决方案。在 laravel 上,可以有两种方法来更新重新编码

方法01。

$Object = Order::where('id', $order)
          ->update([
                    'name'=>$request->name,
                    'phone'=>$request->phone,
                  ]);

方法02。

$Object           = Order::find($id);
$Object ['name']  =  $request->name;
$Object ['phone'] =  $request->phone;
$Object ->save();

起初,我尝试使用方法 01 审核日志。该方法不会登录更新,但会记录创建和删除的日志。因此我尝试了方法 02,它成功记录了创建、更新和删除事件。我个人认为方法 02 可以找到列,因为它检索每一列,然后保存更改,以便 laravel 可以识别更改以命中日志。使用方法02解决问题。

$Object           = Order::find($id);
$Object ['name']  =  $request->name;
$Object ['phone'] =  $request->phone;
$Object ->save();
于 2021-08-09T21:53:37.097 回答