astalpaert / laravel-blamable
Laravel Eloquent models blamable
Installs: 17 990
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 4
Open Issues: 2
Requires
- php: ^8.2
- illuminate/auth: ^11.0
- illuminate/database: ^11.0
- illuminate/support: ^11.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.0
README
This package allow you to track who created, updated and deleted Eloquent models in Laravel.
Installation
You can install this package via composer using:
composer require astalpaert/laravel-blamable
The package will automatically register itself.
Usage
Implement Blamable fields
The package provides 2 convenient methods addBlamableFields()
and removeBlamableFields()
which you may use in your migrations to make sure that the database table has the required columns (created_by
, updated_by
and deleted_by
).
public function up() { Schema::table('dummy_models', function (Blueprint $table) { $table->addBlamableFields(); }); } public function down() { Schema::table('dummy_models', function (Blueprint $table) { $table->removeBlamableFields(); }); }
Implement Blamable logic
You may then use the Blamable
trait on the model.
use Astalpaert\LaravelBlamable\Traits\Blamable; use Illuminate\Database\Eloquent\Model; class DummyModel extends Model { use Blamable; //use SoftDeletes; }
Et voilĂ ! The package will fill the blamable columns automatically after creating, updating and deleting the model.
Configuration
To publish the config file to config/astalpaert-blamable.php
run:
php artisan vendor:publish --provider="Astalpaert\LaravelBlamable\Providers\BlameableServiceProvider"
Implement User model
By default, the name
attribute of the authenticated User is used to fill the blamable column. This is configurable in the config under attribute_name
:
return [ 'user' => [ 'attribute_name' => 'name', ], ];
You may also use an accessor in the model for more flexibility:
public function getNameAttribute(): string { return "$this->first_name $this->last_name"; }
Note: The blamable fields are string columns, so make sure the name is a string
.
Implement default value
By default, when there is no authenticated user, the value SYSTEM
is used to fill the blamable column. This is configurable in the config under default
:
return [ 'user' => [ 'default' => 'SYSTEM', ], ];