Ich versuche schon seit einieger Zeit eine OneToOne-Association zwischen der Core-Product-Tabelle und einer selbst erstellten Tabelle zu erstellen. Die eigene Tabelle soll einige Zusatztfelder aufnehmen, die aber nicht sprachen bezogen sind, und dadurch nicht durch CustomFields abgebildet werden sollen.
Ich habe die Verbindung mit der Anleitung und mit der Hilfe der Core-Dateien gebaut. Diese funktioniert aber nicht. Wenn ich mein Plugin installiere, funktioniert auch die Liste der Produkte in der Administration nicht mehr. Wenn ich versuche die Liste zu laden bekomme ich eine Fehler meldung in der Console:
000/api/v3/search/product 500 (Internal Server Error)
Danke für die Antwort, dann Probieren wir es mit dem Code:
ProductExtension.php
public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new OneToOneAssociationField(
'extData',
'id',
'product_id',
ExtensionDataDefinition::class,
false
))->addFlags(new CascadeDelete())
);
}
ExtensionDataDefinition.php
protected function defineFields(): FieldCollection
{
return new FieldCollection([
(new IdField('id', 'id'))->addFlags(new PrimaryKey(), new Required()),
new FkField('product_id', 'productId', ProductDefinition::class),
(new OneToOneAssociationField(
'product',
'product_id',
'id',
ProductDefinition::class
))->addFlags(new CascadeDelete()),
new StringField('video_code', 'videoCode'),
]);
}
@spdenis Hat es bei dir mittlerweile funktioniert? Will ebenfalls eine OneToOne erstellen, die Doku behandelt aber nur die ManyToMany.
Nein, leider nicht. Habe meine Struktur etwas angepasst um keine One-To-One zu verwenden. Aber so als Tipp: in der Erweiterung „Customized Products“ von Shopware AG wird sowas ähnliches gemacht. Vielleicht hilft dir das weiter.