astalpaert / laravel-blamable
Laravel Eloquent 模型可追踪
v1.0.2
2024-08-28 11:17 UTC
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
此包允许您跟踪谁在 Laravel 中创建了、更新了和删除了 Eloquent 模型。
安装
您可以通过 composer 安装此包:
composer require astalpaert/laravel-blamable
包将自动注册自身。
使用方法
实现可追踪字段
该包提供了两个便捷方法 addBlamableFields()
和 removeBlamableFields()
,您可以在迁移中使用这些方法以确保数据库表具有所需的列(created_by
、updated_by
和 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(); }); }
实现可追踪逻辑
然后您可以在模型上使用 Blamable
特性。
use Astalpaert\LaravelBlamable\Traits\Blamable; use Illuminate\Database\Eloquent\Model; class DummyModel extends Model { use Blamable; //use SoftDeletes; }
Et voilà! 该包将在创建、更新和删除模型后自动填充可追踪列。
配置
要发布配置文件到 config/astalpaert-blamable.php
,请运行:
php artisan vendor:publish --provider="Astalpaert\LaravelBlamable\Providers\BlameableServiceProvider"
实现用户模型
默认情况下,使用认证用户的 name
属性来填充可追踪列。这可以在配置中的 attribute_name
下进行配置。
return [ 'user' => [ 'attribute_name' => 'name', ], ];
您还可以在模型中使用访问器以获得更多灵活性
public function getNameAttribute(): string { return "$this->first_name $this->last_name"; }
注意:可追踪字段是字符串列,因此请确保名称是 string
。
实现默认值
默认情况下,如果没有认证用户,将使用值 SYSTEM
来填充可追踪列。这可以在配置中的 default
下进行配置。
return [ 'user' => [ 'default' => 'SYSTEM', ], ];