Laravel Unique Values — це пакет, який генерує постійні унікальні значення з підтримкою роботи в умовах конкурентності. Він має функції, такі як підтримка конкурентних запитів та налаштування генератора, а також зберігає унікальні значення в базі даних:
use JustBetter\UniqueValues\Support\UniqueValue;
$uniqueValue = UniqueValue::make()
->scope("unique-scope")
->generator(function (int $attempt): string {
return match ($attempt) {
0 => "unique-value",
default => "unique-value-" . $attempt
};
})
->generate();
Запуск цього коду згенерує unique-value
, unique-value-1
, unique-value-2
. При четвертій спробі буде викинуто виняток:
Не вдалося згенерувати унікальне значення після трьох спроб для області "unique-scope"
В таблиці бази даних unique_values
буде три записи для згенерованих унікальних значень:
Генератор унікальних значень також підтримує метод attempts()
(за замовчуванням — 3
). Якщо досягнуто максимальної кількості спроб, буде викинуто той самий виняток, залежно від кількості спроб.
Також ви можете додати тему, щоб отримати вже згенероване значення для конкретної теми:
use JustBetter\UniqueValues\Support\UniqueValue;
$uniqueValue = UniqueValue::make()
->scope("unique-scope")
->subject("demo-subject")
// ...
Використовуючи тему, ви отримаєте одне унікальне значення, як показано в цьому прикладі з бази даних:
Якщо ви знову викличете вище наведений код, змінивши тему, наступне згенероване унікальне значення буде unique-scope-1
:
Дізнайтеся більше про цей пакет та отримайте інструкції з установки на GitHub: justbetter/laravel-unique-values. Установити пакет можна через Composer, використовуючи команду:
composer require justbetter/laravel-unique-values