This package is created to add audit user trails by using Laravel Eloquent ORM. Using this package, you would be able to record in the respective database tables, the created_by
, updated_by
and deleted_by
user IDs.
Add the audit trail columns in your database migrations like so:
$table->usertrails(); // for created_by, updated_by
$table->deletetrails(); // for deleted_by
Next, in your model just use the HasUserTrails
and HasDeleteTrails
trait to automatically setup audit user trails like so:
class Post extends \Illuminate\Database\Eloquent\Model
{
use \Insense\LaravelUserAuditTrails\HasUserTrails;
use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}
That's it! Now, sit back and observe the magic of audit user trails. When a new record is created, created_by
will be updated to the user ID that created it. When a record is updated, updated_by
will be updated to the user ID that updated it. When a record is soft deleted, deleted_by
will be updated to the user ID that deleted it.
$ composer require insenseanalytics/laravel-user-audit-trails
Register provider on your config/app.php
file.
'providers' => [
...,
Insense\LaravelUserAuditTrails\UserTrailsServiceProvider::class,
]
If you want to override the default audit trail names of created_by
, updated_by
and deleted_by
, you may do so like so:
In your database migration, add the audit trail columns like so:
$table->usertrails('your-created-by-column', 'your-updated-by-column');
$table->deletetrails('your-deleted-by-column');
Next, in your model, override the static properties CREATED_BY
, UPDATED_BY
and DELETED_BY
. Note that PHP does not allow overriding static properties in the same class, so you would need to extend your model class from a base model class that uses the \Insense\LaravelUserAuditTrails\HasUserTrails
trait like so:
First create your base model class (if not already created). If already created, just add the trait.
class BaseModel extends \Illuminate\Database\Eloquent\Model
{
use \Insense\LaravelUserAuditTrails\HasUserTrails;
use \Insense\LaravelUserAuditTrails\HasDeleteTrails;
}
Next, override the static properties CREATED_BY
, UPDATED_BY
and DELETED_BY
in your model (that extends the base model) like so:
class YourModel extends BaseModel
{
public static $CREATED_BY = 'your-created-by-column';
public static $UPDATED_BY = 'your-updated-by-column';
public static $DELETED_BY = 'your-deleted-by-column';
}
If you wish to omit one of the audit trail columns, you can just set the one you would like to omit to null in your database migration like so:
$table->usertrails('created_by', null);
The example above omits the updated_by column. You can also do the reverse to omit updated_by by setting the first argument to null.
Next, override the static properties CREATED_BY
and UPDATED_BY
in your model (that extends the base model) to set the omitted property to null like so:
class YourModel extends BaseModel
{
public static $CREATED_BY = 'created_by';
public static $UPDATED_BY = null;
}
We are open to PRs as long as they're backed by tests and a small description of the feature added / problem solved.
The MIT License (MIT). Please see License File for more information.