wujunze/laravel-id-generate

Laravel 包,用于根据 RFC 4122 标准生成和验证 UUID。内置仅支持版本 1、3、4 和 5 的 UUID,并生成数字 ID、生成主键

1.0.6 2018-11-26 06:52 UTC

This package is auto-updated.

Last update: 2024-09-12 12:29:55 UTC


README

Build Status codecov.io Latest Stable Version Licence Total Downloads

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 数字的网络服务。

灵感与感谢

Snowflake php 实现