Есть ли способ создать пользовательский префикс UUID для Laravel 5.8? - PullRequest
0 голосов
/ 22 мая 2019

Я хотел бы добавить собственный префикс к UUID в Laravel, чтобы лучше отслеживать записи в базе данных. В настоящее время, когда вызывается, uuid (); Функция создаст запись в таблице так:

6ab4a8c-9597-lle7-a63c-0242c100426l

Но я бы хотел иметь префикс перед каждым элементом uuid в этой таблице. Например, пользователи в таблице Users будут иметь префикс uuid с UUID из:

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

и сообщения будут сохраняться в таблице сообщений с префиксом PUID :

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

для обозначения (уникальный идентификатор '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();

Кто-нибудь знает, как это можно реализовать?

Заранее спасибо.

1 Ответ

1 голос
/ 22 мая 2019

Вы можете использовать аксессор и мутатор для достижения того, что вы хотите в своем веб-интерфейсе, но база данных будет содержать значение в формате 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 и сохранить их в виде строки в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...