Skip to content
On this page

Audit Implementation

Starting from version 4.1.0, support for custom Audit models was added. This lets the user extend implementations other than the traditional Illuminate\Database\Eloquent\Model.

TIP

Audit models must implement the OwenIt\Auditing\Contracts\Audit interface!

MongoDB Audit model example

Start by installing the jenssegers/mongodb package:

sh
composer require jenssegers/mongodb

Implementation:

php
<?php
namespace App\Models;

use Jenssegers\Mongodb\Eloquent\Model;

class MongoAudit extends Model implements \OwenIt\Auditing\Contracts\Audit
{
    use \OwenIt\Auditing\Audit;

    /**
     * {@inheritdoc}
     */
    protected $guarded = [];

    /**
     * {@inheritdoc}
     */
    protected $casts = [
        'old_values'   => 'json',
        'new_values'   => 'json',
    ];

    /**
     * {@inheritdoc}
     */
    public function auditable()
    {
        return $this->morphTo();
    }

    /**
     * {@inheritdoc}
     */
    public function user()
    {
        return $this->morphTo();
    }
}

TIP

The bulk of the Audit logic is in the OwenIt\Auditing\Audit trait.

Defining the Audit model

In the config/audit.php file, set the implementation value as the FQCN of the Audit model you wish to use. If the value is missing from the configuration, the audits() relation method of the Auditing trait will default to OwenIt\Auditing\Models\Audit.

Here's how to set the MongoAudit implementation above:

php
return [
    // ...

    'implementation' => App\Models\MongoAudit::class,

    // Uncomment below if you need to specify the details of the mongo database connection (useful in hybrid setups with multiple DBs)
    // 'drivers' => [
    //     'database' => [
    //         'table' => 'audits',
    //         'connection' => 'mongodb'
    //     ]
    // ],    
    
    // ...
];

Released under the MIT License.