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 en Entity zu erstellen, welches das zu ursprüngliche Entity erweitert. Folgend die Beispieldateien:
Beispiel (shopArticle.php), um shopArticle zu erweitern
<?php declare(strict_types=1); namespace Brandbox\Dev\Example\DbalExtend\Lib\Extend { use Doctrine\ORM\Mapping; class shopArticle { /** * @Mapping\Column(name="shop_article_example", type="string", nullable=false, length=255, options={"default": ""}) * * @constraint NotBlank() * @constraint NotHtml() * @constraint Length(max=255) */ public string $shopArticleExample = ''; } }
Wichtig
Achten Sie auf den Namespace DbalExtend\Lib\Extend
in einem beliebigen Package.
Beispiel (modelling.json), um die Eigenschaft zu beschreiben
{ "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()" ] } ] } ] } ] } ] }
Nach jeder Änderung an den Entity-Klassen, ist es notwendig mit Composer brandbox zu erneut zu installieren:
Beispiel (shopArticle.php), um shopArticle zu erweitern
php composer.phar install php composer.phar update