Laravel Packages

Laravel Unique

Published
Laravel Unique image

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.

Learn more about this package and view the source code on GitHub.

Yannick Lyn Fatt photo

Staff Writer at Laravel News and Full stack web developer.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article
PhpStorm 2026.2 Released image

PhpStorm 2026.2 Released

Read article
Laravel Doctor: Diagnose Your App With One Artisan Command image

Laravel Doctor: Diagnose Your App With One Artisan Command

Read article
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article