Репозиторий продуктов Magento 2


В Magento2 я понял, что мы должны использовать репозитории вместо коллекций. Чего я не понимаю, так это как добавить пользовательские атрибуты в репозиторий.

Если я сделаю что-то подобное:

    $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);

У меня есть список продуктов, но у меня нет всех необходимых атрибутов. Как этого можно добиться? Что-то вроде addAttributeToSelect в Magento 1.

Author: Phoenix128_RiccardoT, 2016-03-23

1 answers

Я понял, что мы должны использовать репозитории вместо коллекций

Не обязательно;

AFAIK, при использовании репозиториев вы придерживаетесь сервисных контрактов Magento 2, что означает, что интерфейсы служб и интерфейсы данных определены (но расширяемы сторонними модулями).

Предоставление возможности во время выполнения изменять результат вызова метода getList() репозитория нарушило бы этот контракт.

Чтобы получить атрибуты, которые вы нужно, чтобы во время выполнения вы могли использовать коллекции. Сам фреймворк Magento 2 активно использует коллекции.

В противном случае вам следует реализовать модуль, который определяет новый интерфейс данных (то есть новый набор атрибутов) для этой сущности.

Надеюсь, это прольет немного света.

 2
Author: Alessandro Ronchi, 2016-06-17 22:19:09