Laravel UUID一代

Ska*_*tch 11 php uuid laravel

我试图用laravel-uuid包生成一个UUID(不是主键,只生成一个).文档非常简单,因此根据自述文件,UUID应该只通过调用生成$uuid = Uuid::generate();,但它返回一个空对象.(我也试过$uuid = Uuid::generate(1);)

我遵循那里提供的安装说明(没有什么不寻常的),应用程序不会抛出任何错误,所以我猜一切都是正确的.

也欢迎替代包装.

And*_*per 32

在 Laravel 5.6+

use Illuminate\Support\Str;

$uuid = Str::uuid()->toString();
Run Code Online (Sandbox Code Playgroud)


Hem*_*ela 28

laravel 5.6中添加了一个新助手来生成通用唯一标识符(UUID)

use Illuminate\Support\Str;

return (string) Str::uuid();

return (string) Str::orderedUuid();
Run Code Online (Sandbox Code Playgroud)

方法返回一个Ramsey\Uuid\Uuid对象

orderedUuid()方法将生成时间戳第一个UUID,以便更容易和更有效地进行数据库索引.

  • 也适用于 Laravel 8。 (7认同)
  • 也适用于 Laravel 10。 (5认同)
  • 对 Laravel 7 也有效。谢谢 (2认同)
  • 也适用于 Laravel 9。 (2认同)

Bri*_*iso 8

在 Laravel 9 和 10 中

use Illuminate\Support\Str;


return (string) Str::uuid();
Run Code Online (Sandbox Code Playgroud)

对于主键 id laravel 9 模型导入

use Illuminate\Database\Eloquent\Concerns\HasUuids;
Run Code Online (Sandbox Code Playgroud)

然后添加到你的班级中

use HasUuids;
Run Code Online (Sandbox Code Playgroud)


bis*_*hop 6

它可能$uuid是空的,因为您的系统没有提供正确类型的熵。您可以尝试使用 v4 或 v5 UUID 的这些库实现:

// https://tools.ietf.org/html/rfc4122#section-4.4
function v4() {
    $data = openssl_random_pseudo_bytes(16, $secure);
    if (false === $data) { return false; }
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

// https://tools.ietf.org/html/rfc4122#section-4.3
function v5($name) {
    $hash = sha1($name, false);
    return sprintf(
        '%s-%s-5%s-%s-%s',
        substr($hash,  0,  8),
        substr($hash,  8,  4),
        substr($hash, 17,  3),
        substr($hash, 24,  4),
        substr($hash, 32, 12)
    );
}
Run Code Online (Sandbox Code Playgroud)


Ska*_*tch 6

事实证明我必须使用$uuid->string获取实际ID,如果你试图在json响应中返回它,整个对象显示为空.