# Order extension table wird bei editieren der Order gelöscht

**URL:** <https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528>\
**Category:** Programmierung\
**Tags:** programming\
**Created:** [17. November 2021 um 14:59 UTC](https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528 "2021-11-17T14:59:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![M\_Schreck](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@M\_Schreck](https://forum.shopware.com/u/M_Schreck)\
**Post date:** [17. November 2021 um 14:59 UTC](https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528/1 "2021-11-17T14:59:56Z")

</div>

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:

```auto
    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:

```auto
        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

---

<div class="post-metadata">

**Author:** ![marc.peternell](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@marc.peternell](https://forum.shopware.com/u/marc.peternell)\
**Post date:** [19. November 2021 um 14:54 UTC](https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528/2 "2021-11-19T14:54:14Z")

</div>

Hallo @M_Schreck ,

wir stehen aktuell vor genau dem gleichen Problem.

Vielleicht hilft dir unser temporärer fix weiter. Wir haben den Foreign Key Constraint fürs erste gelöscht und beziehen uns bei der Extension nur auf die orderId. Dann wird die Extension nicht gelöscht.

Wir werden es dich wissen lassen sobald wir eine Lösung dafür gefunden haben.

lg Marc

---

<div class="post-metadata">

**Author:** ![M\_Schreck](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@M\_Schreck](https://forum.shopware.com/u/M_Schreck)\
**Post date:** [22. November 2021 um 08:00 UTC](https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528/3 "2021-11-22T08:00:10Z")

</div>

Ich glaube, ich habe die Lösung gefunden. Es lag nicht an den obigen Einträgen, sondern die Entity Extension muss angepasst werden:

```auto
class xxxxExtension extends EntityExtension
{
    public function extendFields(FieldCollection $collection): void
    {
        $collection->add(
            (new OneToOneAssociationField(
                'xxxxExtension',
                'id',
                'order_id',
                OrderAddressExtensionDefinition::class,
                true))->addFlags(new ApiAware(), new CascadeDelete())
        );
    }

```

Ich hatte einfach keine Flags eingetragen, durch Angabe von **-\>addFlags(new ApiAware(), new CascadeDelete())** erzeugt es jetzt die entsprechenden Einträge.

Viele Grüße,  
Mario Schreck

---

<div class="post-metadata">

**Author:** ![marc.peternell](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@marc.peternell](https://forum.shopware.com/u/marc.peternell)\
**Post date:** [22. November 2021 um 10:04 UTC](https://forum.shopware.com/t/order-extension-table-wird-bei-editieren-der-order-geloescht/91528/4 "2021-11-22T10:04:30Z")

</div>

Hallo @M_Schreck ,  
super vielen Dank! mit der Flag funktioniert es nun auch bei uns!  
lg Marc
