jeudi 29 octobre 2020

How to change the column names used in Laravel Auditing Package?

I'm currently trying to use Laravel Auditing v4.1, yes, I know it's end of support and due to legacy issues I can't use the newer one.

The issue is, there are two apps, that will be referencing the same audit table. The old app, was using the older version of Laravel Auditing where the column names are different to the version 4.1. So what I was trying to do is map the saving of the audit record referencing to the old column names.

Anyway, what I tried so far:

  • Using a custom model. Changed the implementation value under config/audit.php to my own model App\Models\CustomAudit

    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    use OwenIt\Auditing\Audit as AuditTrait;
    use OwenIt\Auditing\Contracts\Audit as AuditContract;
    
    class CustomAudit extends Model implements AuditContract
    {
        use AuditTrait;
    
        /**
         * {@inheritdoc}
         */
        protected $guarded = [];
    
        /**
         * {@inheritdoc}
         */
        protected $casts = [
            'old_value' => 'json',
            'new_value' => 'json',
        ];
    
    
        /**
         * The attributes that should be mutated to dates.
         *
         * @var array
         */
        protected $dates = [
            'created_at',
            'updated_at'
        ];
    
        /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
        protected $fillable = [
            'id',
            'user_id',
            'owner_type',
            'owner_id',        
            'old_value',
            'new_value',
            'type',
            'route',
            'ip',
        ];
    }
    
    
    

Notice that in this model, I'm using the old column names, but during submit, it says Unknown column old_values that is because it's trying to use the new column names.

  • Under the model class that I want to Audit, I called the function transformAudit and change the array keys on the fly before saving it to the database, which works. But is there a cleaner way to do it?

I tried looking for related issues online but what I only found was adding additional columns.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire