sleimanx2 / eloquent-uuid
为laravel的eloquent提供uuid。
v1.5
2018-03-12 08:21 UTC
Requires
- illuminate/database: 5.*
- illuminate/support: 5.*
- ramsey/uuid: 3.*
Requires (Dev)
- phpunit/phpunit: 4.*
README
通过监听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()。