sleimanx2/eloquent-uuid

为laravel的eloquent提供uuid。

v1.5 2018-03-12 08:21 UTC

This package is auto-updated.

Last update: 2024-09-14 07:51:26 UTC


README

Build Status

通过监听Eloquent的创建事件,简单实现laravel/eloquent行为,将uuid用作主键或作为单独的字段。

用法

use EloquentUuid\Uuid;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use Uuid;
}

您可以定义存储uuid的字段,如下所示(默认:主键)

protected $uuidField = 'uuid';

您可以定义uuid版本,如下所示(默认:版本1)

protected $uuidVersion = 4;

目前这个包只支持版本1和4

通过uuid查询

Category::Uuid('a-uu-id');

目前这个包只支持版本1和4

选择uuid版本。

1- uuid1()基于当前时间和机器的MAC地址生成UUID。

优点:如果您想按创建时间对UUID进行排序,则很有用。缺点:可能存在隐私泄露,因为它揭示了生成UUID的计算机和时间。碰撞可能:如果在同一台机器上(在100纳秒内)生成两个完全相同的UUID。(或一些其他不太可能的情况。)

2- uuid2()似乎不再使用了。

3- uuid3()通过取一个您在某个命名空间内(例如URL、域名等)选择的任意名称的MD5哈希值来生成UUID。

优点:为将UUID块分配给不同的命名空间提供了一种很好的方式。容易从名称重新生成UUID。缺点:如果您已经有了一个唯一的名称,为什么还需要UUID?碰撞可能:如果在命名空间内重复使用名称,或者如果发生哈希碰撞。

4- uuid4()生成一个完全随机的UUID。

优点:没有隐私问题。不必生成唯一的名称。缺点:UUID没有结构。碰撞可能:如果您使用了一个差的随机数生成器,重复使用一个随机种子,或者非常非常不幸。

5- uuid5()与uuid3()相同,只是使用SHA-1哈希而不是MD5。官方上优于uuid3()。