Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 7 Nächste Version anzeigen »

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. Folgend die Beispieldateien:

Beispiel (shopArticle.php), um shopArticle zu erweitern
<?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.

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 erneut zu installieren:

Composer-Update
php composer.phar install
php composer.phar update
  • Keine Stichwörter