In manchen Fällen ist es nicht ausreichend, Eigenschaften von Datentabellen über die Datenmodellierung zu ergänzen. Es kommt in diesem Fall ggf. zu Performance-Problemen, da dessen Daten in einem verschlüsselten JSON-Eigenschaftsfeld (ODM) gespeichert werden.
Um nun individuelle Eigenschaften in bestehenden Entities zu ergänzen, auf die man keinen direkten Zugriff hat, ist es nötig ein Entity zu erstellen, welches das zu ursprüngliche Entity erweitert.
Beispiel
<?php declare(strict_types=1); namespace Brandbox\Dev\Example\DbalExtend\Lib\Extend { use Symfony\Component\Validator\Constraints; use Doctrine\ORM\Mapping; class shopArticle { #[Mapping\Column(name: 'shop_article_example', type: 'string', nullable: false, length: 255, options: ['default': '']] #[Constraints\NotBlank, Constraints\NotHtml, Constraints\Length(max: 255)] public string $shopArticleExample = ''; } }
Wichtig
Achten Sie auf den Namespace DbalExtend\Lib\Extend
in einem beliebigen Package.
{ "type": "modelling", "repositories": [ { "identifier": "shopArticle", "order": [ "general", "shopArticleExample" ], "groups": [ { "identifier": "general", "sets": [ { "identifier": "general", "order": [ "shopArticleName", "ShopArticleExample" ], "columns": [ { "type": "Input", "identifier": "ShopArticleExample", "label": { "de": "Beispiel", "en": "Example" }, "flags": ["result"], "constraint": [ "NotBlank()" ] } ] } ] } ] } ] }
Umgang mit Translations
Wenn individuelle Properties bei Translation-Entities angereichert werden sollen, erstellen Sie für Entity ebenfalls ein Extend-Entity. Zusätzlich ergänzen Sie bitte das flag "translatable" beim entsprechenden Property in der modelling.json.
Composer
Nach jeder Änderung an den Entity-Klassen ist es notwendig, mit Composer brandbox erneut zu installieren:
php composer.phar install php composer.phar update