da-vinci-studio/uuid-generator
Laravel/PHP UUID generator package by Da Vinci Studio. Provides simple helpers to generate UUIDs for your application, useful for model identifiers, tokens, and unique references, with easy integration into existing projects.
Installation
composer require da-vinci-studio/uuid-generator
Add the service provider to config/app.php under providers:
DaVinciStudio\UuidGenerator\UuidServiceProvider::class,
First Usage Generate a UUID via the facade (auto-registered):
use DaVinciStudio\UuidGenerator\Facades\Uuid;
$uuid = Uuid::generate(); // e.g., "550e8400-e29b-41d4-a716-446655440000"
Key Classes
Uuid::generate() – Default UUIDv4.Uuid::generateVersion($version) – Generate UUIDv1/v3/v4/v5.Uuid::isValid($uuid) – Validate UUID format.Replace auto-increment IDs in a users table migration:
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary(); // No need for $table->increments('id')
});
Database Integration
Use with Laravel’s uuid column type (requires doctrine/dbal):
use Illuminate\Support\Facades\Schema;
Schema::table('posts', function (Blueprint $table) {
$table->uuid('uuid')->after('id')->unique();
});
Model UUIDs Cast attributes to UUIDs in models:
protected $casts = [
'external_id' => 'uuid',
];
API Responses Normalize UUIDs in JSON responses:
return response()->json([
'data' => [
'id' => Uuid::generate(), // Ensures consistent format
'name' => 'Example',
],
]);
Uuid::isValid() in Form Requests:
public function rules()
{
return [
'external_id' => 'required|uuid',
];
}
DatabaseSeeder:
factory(App\User::class)->create([
'uuid' => Uuid::generate(),
]);
$user->update(['uuid' => Uuid::generate()]);
No UUIDv7 Support
The package lacks UUIDv7 (time-sortable), which is useful for event sourcing. Consider ramsey/uuid for advanced use cases.
Database Indexing
UUIDs are longer than integers. Ensure proper indexing (e.g., BTREE for MySQL) for performance:
$table->uuid('id')->primary()->index();
Version Confusion UUIDv1 uses MAC addresses (deprecated for privacy). Prefer UUIDv4 for most cases:
Uuid::generateVersion(4); // Explicitly specify version
Uuid::isValid() rejects hyphen-less UUIDs. Normalize input:
$uuid = str_replace('-', '', $uuid); // Remove hyphens before validation
Custom Generators Extend the generator class:
use DaVinciStudio\UuidGenerator\Generators\UuidGenerator;
class CustomUuidGenerator extends UuidGenerator {
public function generate()
{
return parent::generateVersion(5, 'namespace', 'name');
}
}
Register in UuidServiceProvider.
Hybrid IDs Combine UUIDs with timestamps for sorting:
$hybridId = (string) Uuid::generate() . '-' . now()->timestamp;
How can I help you explore Laravel packages today?