Change tracking for Laravel Eloquent model's
This package provides a number of traits to track changes made to a model., (*1)
, (*2)
, (*3)
Install
Via composer:, (*4)
$ composer require hnhdigital-os/laravel-model-change-tracking ~1.0, (*5)
This package's service provider will autoload from Laravel 5.5., (*6)
To enable the service provider in versions prior to Laravel 5.4, edit the config/app.php:, (*7)
'providers' => [
...
Bluora\LaravelModelChangeTracking\ServiceProvider::class,
...
];
State Change
Track state changes on your model and by which user for the following states - created, updated, deleted, and restored., (*8)
Attribute Change Trait
Adds a saving event to the model to track changes to all attribute values., (*9)
Change by User Trait
Adds events to set a attribute to the current user for when a model is created, updated, archived, or deleted., (*10)
Usage
User tracking of changes.
Add a created_by, updated_by, archived_by, and deleted_by attributes to your model's database table., (*11)
namespace App\Models;
use Bluora\LaravelModelChangeTracking\ChangeByUserTrait;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use ChangeByUserTrait;
}
Turn off tracking attribute
You can turn off by returning false., (*12)
public function getCreatedByColumn()
{
return false;
}
public function getUpdatedByColumn()
{
return false;
}
public function getArchivedByColumn()
{
return false;
}
public function getDeletedByColumn()
{
return false;
}
Different attribute name
You can specify the attribute name in the return value., (*13)
public function getCreatedByColumn()
{
return 'created_by';
}
public function getUpdatedByColumn()
{
return 'updated_by';
}
public function getArchivedByColumn()
{
return 'updated_by';
}
public function getDeletedByColumn()
{
return 'deleted_by';
}
Track state changes of models
Tracks model state changes externally in database table., (*14)
namespace App\Models;
use Bluora\LaravelModelChangeTracking\LogStateChangeTrait;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use LogStateChangeTrait;
}
Log each attribute value change
Tracks attribute value changes., (*15)
namespace App\Models;
use Bluora\LaravelModelChangeTracking\LogChangeTrait;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use LogChangeTrait;
protected $do_not_log = [
'password',
'remember_token',
];
}