abdulrhmansouda / muid
此包用于具有动态选项字符的唯一ID
1.2.1
2023-11-24 03:15 UTC
Requires
- php: >=5.3.0
- illuminate/database: *
- illuminate/support: *
Requires (Dev)
- orchestra/testbench: dev-develop
README
此包用于生成uuid,但具有自定义长度和字符集。
设置
安装
使用包管理器composer来安装muid。
composer require abdulrhmansouda/muid
配置
如果您想更改默认值,可以通过运行以下命令发布配置文件:
php artisan vendor:publish --tag=muid-config
用法
在您的表迁移中
public function up(): void { Schema::create('table_name', function (Blueprint $table) { $table->muid()->primary(); \\ by default the column name is "muid" $table->timestamps(); }); }
在您的模型中
use Illuminate\Database\Eloquent\Model; use MUID\HasMUID; class TableName extends Model { use HasMUID; }
就是这样 ^_^
定制
您能够添加多个列,更改列名,列内字符串的长度,字符集。
首先,要更改列名,您必须从迁移开始
public function up(): void { Schema::create('table_name', function (Blueprint $table) { $table->muid('id')->primary(); $table->muid('unique_code', 5)->unique(); $table->timestamps(); }); }
然后从您的模型中,您可以按如下方式更改列名、长度和字符集
use Illuminate\Database\Eloquent\Model; use MUID\HasMUID; class TableName extends Model { use HasMUID; protected static function get_muid_columns(): array { return [ [ 'column_name' => 'id', // 'length' => 10, default length is 10 // 'charset' => '0123456789abcdefghijklmnopqrstuvwxyz', default chareset ], [ 'column_name' => 'unique_code', 'length' => 5, 'charset' => '0123456789', ], ]; } }
辅助函数
当您想手动生成muid时。
根据模型,自动获取长度和字符集的参数。
use Illuminate\Support\Str; $unique_muid = Str::generateMUIDByModel(ModelName::class); // default column name is muid. $unique_muid = Str::generateMUIDByModel(ModelName::class, 'column_name');
如果您完全不使用模型,可以根据表名生成基于的唯一muid。
use Illuminate\Support\Str; $unique_muid = Str::generateMUIDByTable('table_name'); // default column_name = 'muid' // default column_length = 10 // default charset = '0123456789abcdefghijklmnopqrstuvwxyz' $unique_muid = Str::generateMUIDByTable('table_name', 'column_name', 5, '0123456789');
要将muid列添加到已记录的表中
在将配置添加到模型后,您必须在迁移中添加。
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::table('table_name', function (Blueprint $table) { $table->muid('new_column_name')->nullable(); }); TableName::all()->each(function ($model_instance) { $model_instance->generateMUID(['new_column_name']); $model_instance->save(); }); Schema::table('table_name', function (Blueprint $table) { $table->muid('new_column_name') ->nullable(false) ->change(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::table('table_name', function (Blueprint $table) { $table->dropColumn(['new_column_name']); }); } };
贡献
欢迎提交拉取请求。对于重大更改,请首先提交问题以讨论您想要更改的内容。
请确保根据需要更新测试。