mindtwo / laravel-auto-create-uuid
Automatically generate UUIDs for Eloquent models on creation and replication.
Package info
github.com/mindtwo/laravel-auto-create-uuid
pkg:composer/mindtwo/laravel-auto-create-uuid
Fund package maintenance!
Requires
- php: ^8.2
- illuminate/support: ^10.0 || ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- larastan/larastan: ^2.9 || ^3.0
- laravel/pint: ^1.18
- orchestra/testbench: ^8.0 || ^9.0 || ^10.0 || ^11.0
- pestphp/pest: ^2.0 || ^3.0 || ^4.0
README
Automatically populate a UUID column on Eloquent models when they are created or replicated. Drop the trait onto any model and the rest works without configuration.
Installation
Install the package via Composer:
composer require mindtwo/laravel-auto-create-uuid
Requirements
- PHP 8.2+
- Laravel 10, 11, 12, or 13
Usage
Add the trait to a model
use Illuminate\Database\Eloquent\Model; use mindtwo\LaravelAutoCreateUuid\AutoCreateUuid; class Example extends Model { use AutoCreateUuid; }
Add a UUID column to the migration
$table->uuid('uuid')->unique();
The trait listens to the creating and replicating model events and fills
the configured UUID column with a new UUID v4 whenever the column is empty or
holds an invalid UUID.
Customize the UUID column
The default column name is uuid. To use a different column, either define a
$uuid_column property:
class Example extends Model { use AutoCreateUuid; protected string $uuid_column = 'identifier'; }
or override the getUuidColumn() method:
class Example extends Model { use AutoCreateUuid; public function getUuidColumn(): string { return 'identifier'; } }
Replicating models
The trait overrides Model::replicate() to ensure the UUID column is excluded
from the cloned attributes, so the replica receives a fresh UUID via the
replicating event.
Testing
composer test
Static analysis
composer analyse
Code style
composer format
Changelog
Please see CHANGELOG for a list of recent changes.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email info@mindtwo.de instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.