Hallo und einen schönen Pfingstmontag!
Ich bastle gerade an meiner ersten Conta-Erweiterung mit Symfony und habe eine kurze Frage zu Relations und was der korrekte oder üblichste Weg ist.
Gegeben sind zwei Tabellen, die über eine ManyToOne Beziehung verbunden sind. Die Beziehung in den Entities sieht vereinfach so aus:
MyItem.php
MyCollection.phpCode:#[ORM\Table(name: "tl_my_item")] class MyItem { … #[ORM\ManyToOne(targetEntity: MyCollection::class, inversedBy: 'items')] private ?MyCollection $collection = null;
In der tl_my_item wird dann automatisch die Spalte collection_id angelegt.Code:#[ORM\Table(name: 'tl_my_collection')] class MyCollection { … #[ORM\OneToMany(mappedBy: 'collection', targetEntity: MyItem::class)] private Collection $items;
Entsprechend muss ich das Feld in der DCA auch benennen:
tl_my_item.php
So richtig gefällt mir das aber nicht, weshalb ich im Entity mit #[ORM\JoinColumn den Spaltennamen explizit angegeben habe:Code:'fields' => [ … 'collection_id' => [ 'inputType' => 'select', 'filter' => true, 'sorting' => true, 'foreignKey' => 'tl_my_collection.title', 'eval' => ['mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'], 'relation' => ['type' => 'belongsTo', 'load' => 'lazy'], ]
MyItem.php
Dann wir die Spalte collection genannte und kann so im DCA angesprochen werden.Code:#[ORM\Table(name: "tl_my_item")] #[ORM\JoinColumn(name: 'collection', referencedColumnName: 'id')] class MyItem { … #[ORM\ManyToOne(targetEntity: MyCollection::class, inversedBy: 'items')] private ?MyCollection $collection = null;
Meine Frage ist jetzt, was hier Best practice ist oder ob es egal ist oder ob ich gleich etwas ganz falsch gemacht habe?
Gruß

Zitieren
