Product Entity erweitern (many-to-one)

Ich habe mich durch die Doku gearbeitet aber keine wirklich Antwort auf meine Frage gefunden, darum jetzt mal hier.

Ich hab folgendes vor:

Ich möchte das Product Entity erweitern um eine Referenz auf mein Custom Translated Entity (many-to-one). Meine “Annahme” bisher war das in der Product Tabelle eine weitere Spalte hinzugefügt würde ähnlich der Attribute in den model Tabellen welche die Referenz aufnehmen (product_media_id, tax_id, …). Diese Annahme scheint falsch zu sein. Soweit so gut.

Muss ich eine eigenes Relation Entity mit entsprechender Tabelle erstellen, die diese Beziehung abbildet, oder muss ich ein custom field erstellen? Wobei custom fields keine Beziehungen unterstützen (laut Doku). Leider gibt das BundleExample auch keinen Hinweis, da es eine many-to-many abbildet. Hier ist klar das es ohne eine weitere Tabelle nicht funktionieren kann.

Kann mir jemand auf die Sprünge helfen. Danke

bump

Also für andere die danach suchen. Die ProductExtension Klasse muss ereitert werden um ein FKField und ein ManyToOneField. Hier kurz der demo code.

public function extendFields(FieldCollection $collection): void
{
    $collection->add(
        new ManyToOneAssociationField(
            'custom',
            'test_custom_id',
            CustomDefinition::class,
            'id',
            true
        )
    );

    $collection->add(
        new FkField(
            'test_custom_id',
            'testCustomId',
            CustomDefinition::class
        )
    );
}

 

HIer kurz der Twig Teil für den Admin Bereich

{% block sw_product_detail_attribute_sets %}
    {% parent() %}
        
            
            
        
{% endblock %}

Was aktuell noch fehlt ist das laden und speichern der Auswahl des Entities. Werde das ergänzen sobald ich herausgefunden habe wie das läuft. Es kommt evt. etwas Doku von Shopware zu diesem Thema.

1 Like

Hast du da schon etwas herausgefunden?

Hi,

gibt es hier neue Infos?

Ich möchte das Gleiche einbauen und finde auch keine Lösung.

 

Das Laden der Entity hab ich über einen Subscriber gemacht und dort das Criteria Object um meine Assoziation ergänzt. Das funktioniert soweit…  Das hab ich übrigens auch im Vue Code gemacht.

Custom Fields unterstützen keine Beziehungen, weil die Werte in der Tabelle product_translation im Feld custom_fields als JSON String abgespeichert werden. Darüber kann man dann eben nicht joinen.

Auch wir haben eine ähnliche Anforderung. Möchten der product Tabelle ein weiteres Feld „supplier_id“ hinzufügen, dass dann auch auf eine neue Tabelle joinen soll.

Wie hast du @Almare das Feld in der products Tabelle hinzu bekommen, über eine normale Migration?
Und das extendsFields() gehört in die Klasse, die die Entität beschreibt? Hättest du ev. ein Code Snippet, wo die addAssocation() hinein kommen muss im Subscriber? Danke dir für deine Unterstützung.

Schau Dir mal das „Bundles Example“ von Shopware an https://docs.shopware.com/en/shopware-platform-dev-en/how-to/indepth-guide-bundle, da gibt es ein ganz gutes Beispiel dazu

1 Like

Leider gibt es diese Doku zum Bundle Plugin und die ganzen How-to’s nicht mehr, da die Developer Doku von Shopware relaunched wurde. Kommt das wieder oder sind diese ganzen Infos ev. woanders auffindbar @Moritz_Naczenski ?