我正在尝试使用https://docs.angularjs.org/api/ng/directive/ngChecked包生成UUID(不是主键,只生成一个)。文档非常简单,因此根据自述文件,只需调用$uuid = Uuid::generate();
即可生成UUID,但它会返回一个空对象。 (我也试过$uuid = Uuid::generate(1);
)
我按照那里提供的安装说明(没有任何异常),应用程序不会抛出任何错误,所以我想一切都是正确的。
也欢迎替代套餐。
答案 0 :(得分:16)
在 laravel 5.6 中添加了新助手以生成通用唯一标识符(UUID)
use Illuminate\Support\Str;
return (string) Str::uuid();
return (string) Str::orderedUuid();
方法返回Ramsey\Uuid\Uuid
对象
orderedUuid()
方法将生成时间戳第一个UUID,以便更轻松,更有效地进行数据库索引。
答案 1 :(得分:6)
原来我必须使用$uuid->string
来获取实际ID,如果你试图在json响应中返回它,整个对象显示为空。
答案 2 :(得分:1)
$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)
);
}
答案 3 :(得分:1)
尝试使用此软件包将自动生成并在您的模型中分配UUID字段,也可以通过UUID键显示和更新。
答案 4 :(得分:0)
在Laravel 5.6及更高版本中
use Illuminate\Support\Str;
$uuid = Str::uuid()->toString();