Repositório de produtos Magento 2
-
29-09-2020 - |
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.
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.