Magento 2 Produkt-Repository
-
29-09-2020 - |
Frage
In Magento2 habe ich verstanden, dass wir Repositorys anstelle von Sammlungen verwenden müssen.Was ich nicht verstehe, ist, wie man dem Repository benutzerdefinierte Attribute hinzufügt.
Wenn ich so etwas mache:
$searchCriteria = $this->searchCriteriaBuilder
->addFilter(ProductInterface::STATUS, Status::STATUS_ENABLED)
->addFilter(ProductInterface::VISIBILITY, array(Visibility::VISIBILITY_IN_SEARCH, Visibility::VISIBILITY_BOTH), 'in')
->create();
$products = $this->productRepositoryInterface->getList($searchCriteria);
Ich habe eine Liste von Produkten, aber ich habe nicht alle Attribute, die ich brauche.Wie kann das erreicht werden?So etwas wie das addAttributeToSelect
in Magento 1.
Lösung
Ich habe verstanden, dass wir Repositorys anstelle von Sammlungen verwenden müssen
nicht unbedingt;
AFAIK, wenn Sie Repositories verwenden, halten Sie sich an Magento 2-Serviceverträge, was bedeutet, dass Serviceschnittstellen und Datenschnittstellen definiert sind (aber durch Module von Drittanbietern erweiterbar sind).
Ermöglicht es zur Laufzeit, das Ergebnis des Aufrufs an das zu ändern getList()
die Methode eines Repositorys würde gegen diesen Vertrag verstoßen.
Um die Attribute abzurufen, die Sie zur Laufzeit benötigen, können Sie Sammlungen verwenden.Das Magento 2-Framework selbst nutzt Sammlungen stark.
Andernfalls sollten Sie ein Modul implementieren, das eine neue Datenschnittstelle (dh den neuen Satz von Attributen) für diese Entität definiert.
Hoffe, es bringt etwas Licht ins Dunkel.