Knowledge Base

Empty filter

Laravel Unique

https://laravel-news.com/laravel-unique?ref=dailydev
https://github.com/willvincent/laravel-unique


Laravel Unique is a package created by Will Vincent that provides a trait for Laravel Eloquent models to ensure a field remains unique within specified constraints. It offers flexible suffix formats or custom value generators, ideal for scenarios like unique names, slugs, or identifiers.

#Main Features
Enforces uniqueness at the application level before saving.
Supports custom suffix formats (e.g., ({n}) or -{n}).
Allows custom value generators for advanced uniqueness logic.
Configurable via a config file or model properties.
Handles constraints (e.g., uniqueness within a specific scope).
#Examples
use WillVincent\LaravelUnique\HasUniqueNames;

class Team extends Model
{
use HasUniqueNames;

// Optional: Override default settings
protected $uniqueField = 'team_name'; // Field to keep unique (default: 'name')
protected $constraintFields = ['team_id']; // Scope of uniqueness (default: [])
protected $uniqueSuffixFormat = '-{n}'; // Suffix format (default: ' ({n})')
}
If our team_name is "LNFC" and our team_id is 1, then our output would be:

Output: "LNFC" (if unique)
Output: "LNFC-1" (if "LNFC" already exists)
Output: "LNFC-2" (if "LNFC" and "LNFC-1" already exists)
You can also create a custom generator by adding a method to your Model:

protected $uniqueValueGenerator = 'generateUniqueTeamName';

public function generateUniqueTeamName(string $base, array $constraints, ?int $attempt): string
{
return $base . '-' . \Str::random(5);
}
Output: "LNFC-L2avJ" (random 5-character suffix)
Install the package via Composer:

composer require willvincent/laravel-unique
If you need to customize the defaults you can publish the configuration file (optional):

php artisan vendor:publish --tag="laravel-unique-config"
Note: This package ensures uniqueness at the application level. For data integrity, particularly in high-concurrency scenarios, it is advisable to add database-level unique constraints (such as unique indexes) in conjunction with this trait.

Published
Back to Index