mir ist gerade aufgefallen, dass die “getName()” Methode der ProductEntity einen leeren String für Variantenkinder zurückgibt. Auch die Translation für ProductEntity ist ist leer.
Wie komme ich an den Namen einer Variante? Der Name bei einer SalesChannelProductEntity ist in den Translations (aber auch nur dort) gefüllt. Aber muss ich echt eine SalesChannelProductEntity dafür generieren? Ich hab für diesen Use Case nämlich eigentlich keinen definierten SalesChannel, es soll einfach “generell” der Standard-Produkttitel des Produktes ausgegeben werden.
Auch nach einem $criteria->addAssociation(‘translations’) bleibt die Translation und damit der Name leer.
Das gilt übrigens nur, wenn der Variantenname vererbt wurde. Ist die Vererbung aufgehoben und hat die Variante einen eigenen Namen, liefert getName() sehr wohl den Namen. Ich könnte jetzt tricksen und mir, falls der Name leer ist, den Parent-Namen holen… aber geht das nicht irgendwie “automatisiert”? Fehlt irgendeine Association?
Hey, ich meine ich hatte es in dem Fall dann tatsächlich so gemacht, dass ich mir den Namen aus dem Parent hole. Sprich erst schauen, ob getName() einen Namen liefert → wenn nicht, in den Translations (->getTranslated()) schauen → wenn immer noch nicht, dann anhand der parentId über das ProductRepository den Parent-Artikel holen und davon den Namen verwenden.
Hm ok das ist zu performanceintensiv für meinen Case. Eigentlich sollte es tun wenn $salesChannelContext->getContext()->setConsiderInheritance(true); gesetzt ist aber es funtioniert leider nicht… Ich recherchier mal weiter. Danke dir
Einfach $product->getTranslation(‚name‘) verwenden dann greift der Fallback auf das Eleternprodukt
Problem war bei mir, das ich einen Export gebaut habe und dort einen SalesChannelContext generiere. Dort habe ich aber vergessen die languageId der jeweiligen Domain mitzugeben wodurch die Felder nicht übersetzt wurden.