Your Guide to Laravel Excellence

Model Change Tracking in Laravel 11 - Laravel Auditing

Model Change Tracking in Laravel 11 - Laravel Auditing

If you want to keep track of your application you can achieve this by laravel auditing package. We will implement laravel audit package in laravel 11, which is laravel latest version.

Laravel Auditing package allows you to keep track of changes made to records, ensuring you can monitor and review modifications to your application's data. It offers a way to audit various events that occur on your models like ‘created’,’updated’,'deleted’,’restored’. This package is particularly useful for applications that require an audit trail for debugging, historical analysis,etc.

Installation

This package should be installed via composer.


composer require owen-it/laravel-auditing

php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="config"

php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="migrations"

php artisan migrate

php artisan config:clear

php artisan cache:clear

Setting Up the Model

Make sure your Eloquent model implements AuditableContract and uses the Auditable trait.


<?php
namespace App\Models;

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

class Post extends Model implements AuditableContract
{
    use HasFactory,Auditable;
    protected $fillable = ['title', 'content'];
}

If you go to the config/audit.php.You will this :

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

It means it will create the audit for these 4 events.When any of the events triggered the audit will be created.

Test the Auditing

"Eloquent events fired from a Job or from the console (i.e. migrations, tests, commands, Tinker, ...), WILL NOT be audited by default." Reference


Route::get('/', function () {
    $post = Post::create(['title' => 'New Post', 'content' => 'Post content']);
    $audits = $post->audits;      // Fetch audit logs
    dd($audits, $post);
});

Recommeded Posts

Using Tailwind, Flowbite and Simple-DataTables in Laravel

Using Tailwind, Flowbite and Simple-DataTables in Laravel

Learn how to set up Tailwind CSS, Flowbite, and Simple-DataTables in a Laravel project. This easy guide shows you how to use Tailwind for styling, build responsive designs with Flowbite components, and add dynamic tables using Simple-DataTables

2 months ago Read article →
Multi language in laravel 11

Multi language in laravel 11

Multi language in laravel 11

2 months ago Read article →
Many-to-Many relationship in Laravel - All you need to know

Many-to-Many relationship in Laravel - All you need to know

how to implement many-to-many relationships in Laravel, including pivot tables, syncing data, and advanced queries. Learn best practices for optimizing database relationships using Laravel Eloquent. Perfect guide for developers to master Laravel many-to-many relationship

2 months ago Read article →
How to Build a PayPal Payment Gateway API in Laravel 11

How to Build a PayPal Payment Gateway API in Laravel 11

How to Build a PayPal Payment Gateway API in Laravel 11

2 months ago Read article →