jlorente / laravel-identitystamps
一个用于注册并控制创建、更新和删除模型用户的 Laravel 插件
Requires
- php: >=7.0.0
- illuminate/support: >=5.5
This package is auto-updated.
Last update: 2024-09-23 00:38:04 UTC
README
一个用于注册并控制创建、更新和删除模型用户的 Laravel 插件。
使用此插件,您可以自动管理控制字段 "created_by"、"updated_by" 和 "deleted_by",这些字段将存储操作模型的用户的身份。
安装
安装此扩展的首选方式是通过 Composer。
安装 Composer 后,您可以使用以下命令安装扩展
$ php composer.phar require jlorente/laravel-identitystamps
或者在您的 composer.json
文件的 require
部分添加
... "require": { "jlorente/laravel-identitystamps": "*" }
到
配置
在您的 config/app.php
服务提供者列表中注册 ServiceProvider。
config/app.php
return [ //other stuff 'providers' => [ //other stuff \Jlorente\Laravel\IdentityStamp\IdentityStampServiceProvider::class, ]; ];
使用方法
在迁移中
您可以使用 Blueprint 方法 identityStamps() 添加可空的 "created_by" 和 "updated_by" UNSIGNED INTEGER 等效列。当然,您也可以自己创建具有自定义名称和类型的列,然后使用这些名称配置模型类,但请记住列的类型应与您的 UserModel 的键类型相同。
class MyMigration extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('my_table', function (Blueprint $table) { $table->increments('id'); $table->string('my_field'); $table->timestamps(); $table->identityStamps(); }); } }
如果您使用软删除,也许您还想为删除添加一个身份戳。您可以通过使用 softDeletesIdentityStamps() 方法来实现,该方法将添加一个可空的 "deleted_by" UNSIGNED INTEGER 列。
class MyMigration extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('my_field'); $table->timestamps(); $table->identityStamps(); $table->softDeletes(); $table->softDeletesIdentityStamps(); }); } }
将行为附加到模型
要启用模型的身份戳,请在模型上使用 Jlorente\IdentityStamp\Eloquent\IdentityStamps 特性
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Jlorente\Laravel\IdentityStamp\Database\Eloquent\IdentityStamps; class Product extends Model { use IdentityStamps, SoftDeletes; }
进一步考虑
使用自定义属性名称
您可以通过在模型上定义类常量来使用自定义属性名称以存储身份。
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Jlorente\Laravel\IdentityStamp\Database\Eloquent\IdentityStamps; class Product extends Model { use IdentityStamps, SoftDeletes; const CREATED_BY = 'my_custom_identity_creation_field'; const UPDATED_BY = 'my_custom_identity_update_field'; const DELETED_BY = 'my_custom_identity_deletion_field'; }
如果您不喜欢类常量,也可以覆盖解析身份戳字段的特性方法。
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Jlorente\Laravel\IdentityStamp\Database\Eloquent\IdentityStamps; class Product extends Model { use IdentityStamps, SoftDeletes; public function getCreatedByColumn() { return 'my_custom_identity_creation_field'; } public function getUpdatedByColumn() { return 'my_custom_identity_update_field'; } public function getDeletedByColumn() { return 'my_custom_identity_deletion_field'; } }
使用自定义身份 ID 存储在身份字段中
默认情况下,特性将使用 Laravel 的 Auth::id() 方法来检索存储在身份戳字段中的 ID。您可以自由地覆盖 getIdentityStampValue() 方法以返回您想要存储在字段中的值。
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Auth; use Jlorente\Laravel\IdentityStamp\Database\Eloquent\IdentityStamps; class Product extends Model { use IdentityStamps, SoftDeletes; public function getIdentityStampValue() { return Auth::user() ? Auth::user()->email : null; } }
许可证
版权 © 2019 José Lorente Martín jose.lorente.martin@gmail.com.
根据 BSD 3-Clause 许可证授权。有关详细信息,请参阅 LICENSE.txt。