Laravel Unique Values is a package that generates persistent unique values with support for concurrency. It supports features like concurrency and generator customizations, storing unique values in the database:
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();
Running the code example would generate unique-value
, unique-value-1
, unique-value-2
. The fourth attempt would throw an exception:
Failed to generate unique value after three attempts for scope "unique-scope"
You can see in the unique_values
database table that it has three records for the above unique values:
The unique value generator also accepts an attempts()
method (which is 3
by default)—when the maximum attempt count is reached, we will get the same exception as before based on the number of attempts passed.
You can also add a subject to retrieve a previously generated value for a subject
use JustBetter\UniqueValues\Support\UniqueValue; $uniqueValue = UniqueValue::make() ->scope("unique-scope") ->subject("demo-subject") // ...
Using the subject, it will generate one unique value as seen in this database example:
If you were to call the above code again with a change in subject, the next unique value generated would be unique-scope-1
:
Main Features
- Generate unique values
- Support for concurrency
- Customizable generator
- Maximum attempts
- Support for subjects
You can learn more about this package and get full installation instructions on GitHub at justbetter/laravel-unique-values. You can install this package via Composer using the following command:
composer require justbetter/laravel-unique-values