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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top