此包用于具有动态选项字符的唯一ID

1.2.1 2023-11-24 03:15 UTC

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']);
        });
    }
};

贡献

欢迎提交拉取请求。对于重大更改,请首先提交问题以讨论您想要更改的内容。

请确保根据需要更新测试。

许可证

MIT