簡體   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