繁体   English   中英

有没有一种方法可以为Laravel 5.8创建自定义UUID前缀?

[英]Is there a way to create a custom UUID prefix for Laravel 5.8?

我想在Laravel中为UUID添加自定义前缀,以帮助更好地跟踪数据库条目。 当前,当被调用时,uuid(); 函数将产生一个表条目,如下所示:

6ab4a8c-9597-lle7-a63c-0242c100426l

但是我希望能够在该表中每个uuid条目的前面添加一个前缀。 例如,用户表中的用户将具有的UUID前缀一个UUID:

UUID-6ab4a8c-9597-lle7-a63c-0242c100426l

并且帖子将以PUID前缀保存在帖子表中:

PUID-6ab4a8c-9597-lle7-a63c-0242c100426l

来表示(“发布”唯一标识符)。


“用户”表的默认迁移如下:

Schema::create('users', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

要使用UUID,将使用以下内容:

Schema::create('users', function (Blueprint $table) {

    $table->uuid('uuid')->primary();

});


我不确定定义UUID的模型存储在哪里,也不确定要修改整个模型。

理想情况下,将使用表名和前缀来定义一个uuid:

$table->uuid('puid', 'PUID')->primary();

有人知道如何实现吗?

提前致谢。

您可以使用访问器和更改器来实现前端所需的功能,但是数据库将包含UUID格式的值,因为它是UUID列。

在您的Users模型中:

public function getUuidAttribute($value)
{
    return "UUID-".$value;
}

public function setUuidAttribute($value)
{
    $this->attributes['uuid'] = str_replace("UUID-", "", $value);
}

并在您的Posts模型中:

public function getPuidAttribute($value)
{
    return "PUID-".$value;
}

public function setPuidAttribute($value)
{
    $this->attributes['puid'] = str_replace("PUID-", "", $value);
}

当您转储$user->uuid ,您将看到UUID-6ab4a8c-9597-lle7-a63c-0242c100426l ,并且$post->puid带有PUID-前缀也会发生同样的情况。

否则,您应该自己生成UUID,并将它们另存为字符串在数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM