Php 有没有办法为Laravel 5.8创建自定义UUID前缀?
我想在Laravel中为UUID添加一个自定义前缀,以帮助更好地跟踪数据库条目。当前,当调用uuid()时;函数将生成如下表项:Php 有没有办法为Laravel 5.8创建自定义UUID前缀?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想在Laravel中为UUID添加一个自定义前缀,以帮助更好地跟踪数据库条目。当前,当调用uuid()时;函数将生成如下表项: 6ab4a8c-9597-lle7-a63c-0242c100426l 但我希望能够在该表中的每个uuid条目前面添加前缀。例如,Users表中的用户的uuid前缀为uuid: 和POST将以PUID前缀保存在Posts表中: 表示('Post'唯一标识符) Users表的默认迁移如下所示: Schema::create('users', function (Bl
6ab4a8c-9597-lle7-a63c-0242c100426l
但我希望能够在该表中的每个uuid条目前面添加前缀。例如,Users表中的用户的uuid前缀为uuid:
和POST将以PUID前缀保存在Posts表中:
表示('Post'唯一标识符)
Users表的默认迁移如下所示:
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列 在您的
用户
型号中:
public function getUuidAttribute($value)
{
return "UUID-".$value;
}
public function setUuidAttribute($value)
{
$this->attributes['uuid'] = str_replace("UUID-", "", $value);
}
在您的帖子中
模型:
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
,前缀为puid-
的$post->puid
也会出现同样的情况
否则,您应该自己生成UUID,并将其保存为数据库中的字符串。即使数据库中有UUID列,据我所知,Laravel也不会自动填写。这意味着你(或你安装的软件包)要对此负责。你想解决什么问题?似乎应该有比搞乱UUID生成更好的解决方案。
public function getUuidAttribute($value)
{
return "UUID-".$value;
}
public function setUuidAttribute($value)
{
$this->attributes['uuid'] = str_replace("UUID-", "", $value);
}
public function getPuidAttribute($value)
{
return "PUID-".$value;
}
public function setPuidAttribute($value)
{
$this->attributes['puid'] = str_replace("PUID-", "", $value);
}