Вопрос

В 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.

Это было полезно?

Решение

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

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

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

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

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

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

Надеюсь, это прольет хоть какой-то свет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top