Download the PHP package lukasz93p/doctrine-domain-id-types without Composer
On this page you can find all versions of the php package lukasz93p/doctrine-domain-id-types. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download lukasz93p/doctrine-domain-id-types
More information about lukasz93p/doctrine-domain-id-types
Files in lukasz93p/doctrine-domain-id-types
Package doctrine-domain-id-types
Short Description Package which allows to use custom interfaces as entities ids instead of primitive types.
License MIT
Informations about the package doctrine-domain-id-types
doctrine-domain-id-types
This package is based on ramsey/uuid-doctrine https://packagist.org/packages/ramsey/uuid-doctrine
ramsey/uuid-doctrine is a great package which provides new Doctrine column type - uuid
Although uuid column is very useful it's not enough explicit for Domain Driven Design.
For DDD best approach is to use ids with meaningful names ex. UserId, CustomerId, ProductId, instead of Uuid.
This package will help You create new Doctrine column types for aggregates/entities ids.
Fragment of ramsey's uuid-doctrine documentation:
Examples
Configuration
To configure Doctrine to use ramsey/uuid as a field type, you'll need to set up the following in your bootstrap:
In Symfony:
In Zend Framework:
Usage
Then, in your models, you may annotate properties by setting the @Column
type to uuid
, and defining a custom generator of Ramsey\Uuid\UuidGenerator
.
Doctrine will handle the rest.
If you use the XML Mapping instead of PHP annotations.
You can also use the YAML Mapping.
End of fragment of ramsey's uuid-doctrine documentation
AggregateId capabilities provided by this package:
How to create more explicit id classes:
Create interface for Your id:
Create implementation for that interface, extending Lukasz93P\DoctrineDomainIdTypes\domainId\BaseAggregateId
Create custom Doctrine field class extending Lukasz93P\DoctrineDomainIdTypes\doctrineId\AggregateIdDoctrineFieldType
Add field to Doctrine entity in the same way as for ramsey/uuid-doctrine field:
Or resign from auto-generating id field value:
Register custom field type for Doctrine the same way as for ramsey/uuid-doctrine, described above, ex. for Symfony: