astalpaert/laravel-blamable

Laravel Eloquent 模型可追踪

v1.0.2 2024-08-28 11:17 UTC

This package is auto-updated.

Last update: 2024-08-28 11:59:34 UTC


README

此包允许您跟踪谁在 Laravel 中创建了、更新了和删除了 Eloquent 模型。

安装

您可以通过 composer 安装此包:

composer require astalpaert/laravel-blamable

包将自动注册自身。

使用方法

实现可追踪字段

该包提供了两个便捷方法 addBlamableFields()removeBlamableFields(),您可以在迁移中使用这些方法以确保数据库表具有所需的列(created_byupdated_bydeleted_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',
    ],
];