This package allow you to track who created, updated and deleted Eloquent models in Laravel.
You can install this package via composer using:
composer require astalpaert/laravel-blamable
The package will automatically register itself.
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();
});
}
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.
To publish the config file to config/astalpaert-blamable.php
run:
php artisan vendor:publish --provider="Astalpaert\LaravelBlamable\Providers\BlameableServiceProvider"
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
.
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',
],
];