tourze / doctrine-uuid-bundle
Doctrine UUID
Requires
- php: ^8.1
- doctrine/doctrine-bundle: ^2.13
- doctrine/orm: ^2.20 || ^3.0
- doctrine/persistence: ^3.1 || ^4
- psr/log: ^3|^2|^1
- symfony/config: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/http-kernel: ^6.4
- symfony/property-access: ^6.4
- symfony/uid: ^6.4
- symfony/yaml: ^6.4 || ^7.1
- tourze/bundle-dependency: 0.0.*
- tourze/doctrine-entity-checker-bundle: ~0.0.8
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-04-25 14:30:28 UTC
README
A Symfony bundle for automatic UUID (v1/v4) assignment in Doctrine entities using PHP 8 attributes.
Features
- Automatic UUID v1 and v4 assignment for entity properties
- Zero configuration, works out of the box
- Attribute-driven and easy to use
- Seamless integration with Doctrine event system
- Built-in logging for debugging
- Extensible: custom UUID generation strategies supported
- Nullable UUID fields supported
- Automatic database schema updates
- Compatible with Symfony 6.4+ and Doctrine 2.13+
Requirements
- PHP 8.1 or higher
- Symfony 6.4 or higher
Installation
composer require tourze/doctrine-uuid-bundle
Quick Start
Add the UuidV1Column
or UuidV4Column
attribute to your entity properties:
use Tourze\DoctrineUuidBundle\Attribute\UuidV1Column; use Tourze\DoctrineUuidBundle\Attribute\UuidV4Column; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] class YourEntity { #[ORM\Id] #[ORM\Column(type: 'uuid')] #[UuidV1Column] private string $uuidV1; #[ORM\Column(type: 'uuid')] #[UuidV4Column] private ?string $uuidV4 = null; }
UUIDs will be automatically generated when the entity is persisted.
Advanced Usage
You may extend the Attribute or event listener to implement custom UUID generation logic.
Common Issues
- UUID not being generated: Ensure your entity uses the correct attributes and the bundle is registered in
config/bundles.php
. - Database schema issues: Run
php bin/console doctrine:schema:update --force
to update your database schema. - Performance considerations: UUID v1 is time-based and may be more suitable for database indexing than UUID v4.
Documentation
- API Docs
- Most configuration is automatic. For advanced extension, you may customize the event subscriber.
Contributing
- Feel free to submit Issues and PRs
- Follow PSR code style
- Please ensure tests pass before submitting PRs
- Fork the repo, create a branch, push and submit a PR
License
- License: MIT
- Author: Tourze
Changelog
See CHANGELOG
Workflow Diagram
See Mermaid.md
for a visual workflow.
2. Create your feature branch (git checkout -b feature/amazing-feature
)
3. Commit your changes (git commit -m 'Add some amazing feature'
)
4. Push to the branch (git push origin feature/amazing-feature
)
5. Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.