我想在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的模型存储在哪里,也不确定要修改 entire 模型。
理想情况下,将使用表名和前缀来定义uuid:
$table->uuid('puid', 'PUID')->primary();
谢谢。
答案 0 :(得分:1)
您可以使用访问器和更改器来实现前端所需的功能,但是数据库将包含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);
}
当您转储UUID-6ab4a8c-9597-lle7-a63c-0242c100426l
时,您会看到$user->uuid
,而$post->puid
的前缀为PUID-
也会发生。
否则,您应该自己生成UUID,并将它们另存为字符串在数据库中。