Pergunta

No Magento2, entendi que devemos usar repositórios em vez de coleções.O que não entendo é como adicionar atributos personalizados ao repositório.

Se eu fizer algo assim:

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

Tenho uma lista de produtos, mas não possuo todos os atributos que preciso.Como podemos conseguir isso?Algo como o addAttributeToSelect no Magento 1.

Foi útil?

Solução

Eu entendi que temos que usar repositórios em vez de coleções

não necessariamente;

AFAIK, ao usar repositórios, você adere aos contratos de serviço do Magento 2, o que significa que as interfaces de serviço e as interfaces de dados são definidas (mas extensíveis por módulos de terceiros).

Tornando possível em tempo de execução alterar o resultado da chamada para o getList() método de um repositório violaria este contrato.

Para recuperar os atributos necessários em tempo de execução, você pode usar coleções.A própria estrutura do Magento 2 faz uso intenso de coleções.

Caso contrário, você deverá implementar um módulo que defina uma nova interface de dados (ou seja, o novo conjunto de atributos) para essa entidade.

Espero que lance alguma luz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top