Hallo zusammen,
ich habe eine Extension Tabelle auf die Tabelle order eingerichtet. Befüllen und Auslesen von Daten klappt auch alles, aber ich habe einen seltsamen Seiteneffekt - wenn ich in Shopware (6.4.4.1) die Bestellung bearbeiten will, wird ja eine Kopie der Bestellung mit neuer version_id angelegt. Klicke ich auf abbrechen, so werden alle Daten in meiner Extension Tabelle gelöscht. Die Tabelle wurde mit folgender Definition angelegt:
protected function defineFields(): FieldCollection
{
return new FieldCollection([
(new IdField('id', 'id'))->addFlags(new ApiAware(), new PrimaryKey(), new Required()),
(new VersionField())->addFlags(new ApiAware()),
(new FkField('order_id', 'orderId', OrderDefinition::class))->addFlags(new Required()),
(new ReferenceVersionField(OrderDefinition::class))->addFlags(new Required()),
...
new OneToOneAssociationField('order', 'order_id', 'id', OrderDefinition::class, false)
]);
}
Das Migrationfile enthält folgende Tabellenerzeugung:
CREATE TABLE IF NOT EXISTS `iwelt_order_address_extension` (
`id` BINARY(16) NOT NULL,
`version_id` BINARY(16) NOT NULL,
`order_id` BINARY(16) NOT NULL,
`order_version_id` BINARY(16) NOT NULL,
...
`created_at` DATETIME(3) NOT NULL,
`updated_at` DATETIME(3),
PRIMARY KEY (`id`, `version_id`),
CONSTRAINT `fk.iwelt_order_address_extension.order_id`
FOREIGN KEY (`order_id`, `order_version_id`)
REFERENCES `order` (`id`, `version_id`)
ON DELETE CASCADE ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
Wie kann ich meine Order Extension dazu bringen, dass dort auch ein neuer Eintrag mit korrekter Version ID angelegt wird?
Viele Grüße,
Mario Schreck