wujunze / laravel-id-generate
Laravel 包,用于根据 RFC 4122 标准生成和验证 UUID。内置仅支持版本 1、3、4 和 5 的 UUID,并生成数字 ID、生成主键
Requires
- php: ^7.1
- illuminate/support: ^5
- laravel/framework: ^5
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.19.10
- fzaninotto/faker: ^1.4
- mockery/mockery: ^1.2
- phpunit/phpunit: ^7.4
This package is auto-updated.
Last update: 2024-09-12 12:29:55 UTC
README
Laravel 包,用于根据 RFC 4122 标准生成和验证 UUID。内置仅支持版本 1、3、4 和 5 的 UUID,并生成数字 ID、生成主键
基于 laravel-uuid
感谢 laravel-uuid
安装
在 Laravel 5.5 中,laravel-uuid 将通过新的包发现功能进行安装,因此您只需将包添加到您的 composer.json 文件中
composer require "wujunze/laravel-id-generate"
安装后,您应该看到
Discovered Package: wujunze/laravel-id-generate
然后您就可以开始使用了
基本用法
要快速生成一个 UUID,只需这样做
IdGen::generate()
这将生成一个版本 1 IdGen 对象
,具有随机生成的 MAC 地址。
要输出生成的 UUID,将其转换为字符串
(string) IdGen::generate()
或者
IdGen::generate()->string
高级用法
UUID 创建
生成一个基于时间的版本 1 UUID。您可以设置可选的节点为 MAC 地址。如果没有提供,将生成一个随机 MAC 地址。
IdGen::generate(1,'00:11:22:33:44:55');
生成一个基于名称的版本 3 UUID,使用 MD5 哈希。
IdGen::generate(3,'test', IdGen::NS_DNS);
生成一个版本 4 的真正随机的 UUID。
IdGen::generate(4);
生成一个基于名称的版本 5 UUID,使用 SHA-1 哈希。
IdGen::generate(5,'test', IdGen::NS_DNS);
id generate
生成示例主键
IdGen::getSamplePk();
通过类型和共享密钥生成 ID
IdGen::genIdByTypeShareKey(6,89);
通过类型生成 ID
IdGen::genIdByType(8);
生成代码
IdGen::genCode(9, 9, 888);
生成 SnowFlake ID
IdGen::snowFlakeId();
一些魔法功能
导入 UUID
$uuid = IdGen::import('d3d29d70-1d25-11e3-8591-034165a3a613');
提取基于时间的 UUID(版本 1)的时间
$uuid = IdGen::generate(1); dd($uuid->time);
提取 UUID 的版本
$uuid = IdGen::generate(4); dd($uuid->version);
Eloquent UUID 生成
如果您希望在 Laravel 模型中自动生成 UUID,只需将此启动方法添加到您的模型中。
/** * Setup model event hooks */ public static function boot() { parent::boot(); self::creating(function ($model) { $model->uuid = (string) IdGen::generate(4); }); }
这将在新记录创建时生成版本 4 UUID。
将模型绑定到 UUID 而不是主键
如果您想在 URL 中使用 UUID 而不是主键,可以将此添加到您的模型中(其中 'uuid' 是存储 UUID 的列名)
/** * Get the route key for the model. * * @return string */ public function getRouteKeyName() { return 'uuid'; }
当您在资源控制器方法中注入模型时,您将获得正确的记录
public function edit(Model $model) { return view('someview.edit')->with([ 'model' => $model, ]); }
验证
就像使用任何其他 Laravel 验证器一样。
'uuid-field' => 'uuid'
'uuid-field' => 'gen_id'
或从头创建验证器。在示例中验证了 IdGen 对象。您还可以验证字符串 $uuid->string
、URN $uuid->urn
或二进制值 $uuid->bytes
$uuid = IdGen::generate(); $genId= IdGen::getSamplePk(); $validator = Validator::make(['uuid' => $uuid], ['uuid' => 'uuid'], ['gen_id' => $genId]); dd($validator->passes());
注意
有关 UUID 规范的完整详细信息,请参阅 http://tools.ietf.org/html/rfc4122。
Snowflake 是一种用于在高度保证下生成唯一 ID 数字的网络服务。