diff --git a/index.md b/index.md index cef72d1c15953daa3412258afeee11b3982e130c..db8518097ee20ed24b2d9493aa0048f7d833c3c7 100644 --- a/index.md +++ b/index.md @@ -202,38 +202,6 @@ Note: - On peut passer le constructeur en privé pour encourager l'utilisation des constructeurs nommés. - ---- -## Les embeddables - -```php -use Doctrine\ORM\Annotation as ORM; - -class NiceArticle -{ - private $uuid; - - /** @ORM\Embedded(class = "ArticleContent") */ - private $articleContent; - - public function __construct(ArticleContent $articleContent) - { - $this->uuid = Uuid::generate(); - $this->articleContent = $articleContent; - } -} -``` - -Note: -- À utiliser en cas de Value Object composite -- Des soucis avec la nullabilité, contournables avec un package -- Ne peuvent contenir des colonnes complexes - ---- -## tarifhaus/doctrine-nullable-embeddable - -Nécessite un setter. - --- ## Les custom types @@ -281,6 +249,67 @@ dans une table. Ça évite aussi des collisions lorsque vous migrez des données d'une base vers une autre, et que la nouvelle base peut elle aussi être alimentée directement. +--- +## Les embeddables + +```php +use Doctrine\ORM\Annotation as ORM; + +class NiceArticle +{ + private $uuid; + + /** @ORM\Embedded(class = "ArticleContent") */ + private $articleContent; + + public function __construct(ArticleContent $articleContent) + { + $this->uuid = Uuid::generate(); + $this->articleContent = $articleContent; + } +} +``` + +```php +/** @ORM\Embeddable() **/ +class ArticleContent +{ + /** @ORM\Column() **/ + private $content; + + /** @ORM\Column() **/ + private $lastModification; +} +``` + +Note: +- À utiliser en cas de Value Object composite +- Des soucis avec la nullabilité, contournables avec un package +- Ne peuvent contenir des colonnes complexes + +--- +## Les embeddables nullables + +```php +use Doctrine\ORM\Annotation as ORM; + +class NiceArticle +{ + private $uuid; + + /** @ORM\Embedded(class = "ArticleContent", nullable=true) */ + private $articleContent; +} +``` + +<span style="font-size: 1em;">❌</span> + +--- +## tarifhaus/doctrine-nullable-embeddable + +Nécessite un setter. + + --- ## Les repositories