Vererbung einer custom Assoziation

Hallo zusammen,

Ich habe ein neues Entity erzeugt (product_cust), das das shopware entity ‘product’ erweitern soll. product_cust besitzt eine referenz auf das product-entity (1:1). Ich habe in einer Extension dem product-entity eine neue Assoziation (OneToOne) hinzugefügt und über einen subscriber mittels des events ‘onProductCriteriaLoaded’ und $event->getCriteria()->addAssociation(‘cust’); das Autloading im Storefront enabled. Autoloading der neuen Assoziation im Adminbereich habe ich über die main.js realisiert, mittels:

Shopware.Component.override('sw-product-detail', {
[...] 
computed: {
        productCriteria() {
            const criteria = new Criteria();

            criteria.addAssociation('cust')

            ...
        }
    }
[...]
}

Die Assoziation in der Extension ist als inherited geflaggt, ebenso habe ich eine migration erzeugt und ausgeführt um die product-tabelle um die spalte cust (nullable) zu erweitern. In der Hauptdatei meines Plugins habe ich außerdem über die activate-funktion noch den Indexer getriggert.

Die Admin-UI habe ich dahingehend erweitert, dass ich in der product-detail-view einen neuen tab ‘cust’ habe, worunter ich die felder meiner neuen assoziation verwalten kann.

Erzeuge ich mir nun über den neuen tab ein neues objekt ‘cust’ für das zugehörige produkt, so kann ich auf dieses im storefront über das extension-property des products zugreifen.

Ich habe allerdings das Problem das die Vererbung nicht funktioniert. Erzeuge ich von dem Produkt eine Variante und greife im Storfront auf die Variante zu, so ist das cust-feld unter ‘extension’ immer null, obwohl das Parent-Product cust-daten besitzt. In der Datenbank kann ich sehen, dass der neue Eintrag für die Variante in der Product-Tabelle in der Spalte ‘cust’ eine Referenz auf das Parent-Product besitzt. Die Referenzierung in der Datenbank klappt also offensichtlich.

 

Was muss ich tun? Habe ich irgendetwas vergessen? Klappt nur das Autloading des cust-feldes im storefront nicht, weil bei Varianten nicht das event ‘onProductCriteriaLoaded’, sondern ein anderes gefeuert wird? Oder fehlt sonst noch etwas essentielles? 

Die Docs bin ich bereits ettliche Male durchgegangen und habe alles dort gefundene auch bei mir realisiert. Ich habe jedoch den Spezialfall einer OneToOne-Relation. Kann das eventuell auch daran liegen?

 

Ich wäre über jede Hilfe dankbar, denn das ist aktuell ein großer Showstopper für mich.

 

Vielen Dank

Ich bin jetzt hingegangen und habe die OneToOne-Relation zu einer OneToMany bzw. ManyToOne-Relation umgebaut und jetzt klappt es.

Einziges Manko ist dass unter ->extensions->cust jetzt kein custEntity mehr sitzt, sondern eine custCollection mit einem Eintrag.

 

Warum funktioniert das Ganze nicht mit einer OneToOne-Relation? Und wenn es doch geht was fehlt mir da? Mit der jetzigen Lösung komme ich zwar erstmal weiter, aber rein logisch bilde ich gerade eine 1:1-Beziehung mit einer 1:N-Beziehung ab, was faktisch nicht korrekt ist…

Hi Pait,

ich habe exakt das selbe Problem. Scheint mir ein Bug im core zu sein.
Sofern ich versuche eine 1:1 relation zu laden, bekomme ich immer NULL zurück.

Nach dem Umstellen auf 1:n funktioneirt es bei mir auch… Echt weird.

Danke für den Hinweis!

Hi @pait‍,

wir stehen bei uns gerade vor dem selben Problem. Könntest du bitte den Quellcode deiner Lösung hier veröffentlichen.

@pait‍ Habe das selbe Problem. Nun stecke ich an dem Problem bei der one-to-many das meine Entitis nicht gelöscht werden. Damit mülle ich langsam meine Datenbank zu. Funktionieren tut alles ,soweit man das sagen kann (Vererbung, neue Entities erstellen, import, usw.). Nur das löschen geht irgendwie überhaupt nicht. Wie hast du denn das löschen gelöst?