Pregunta

En Magento2, entendí que tenemos que usar repositorios en lugar de colecciones.Lo que no entiendo es cómo agregar atributos personalizados al repositorio.

Si hago algo como esto:

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

Tengo una lista de productos, pero no tengo todos los atributos que necesito.¿Cómo se puede lograr esto?Algo como el addAttributeToSelect en Magento 1.

¿Fue útil?

Solución

Entendí que tenemos que usar repositorios en lugar de colecciones.

no necesariamente;

AFAIK, cuando utiliza repositorios, cumple con los contratos de servicio de Magento 2, lo que significa que las interfaces de servicio y las interfaces de datos están definidas (pero extensibles mediante módulos de terceros).

Haciendo posible en tiempo de ejecución cambiar el resultado de la llamada al getList() método de un repositorio violaría este contrato.

Para recuperar los atributos que necesita en tiempo de ejecución, puede utilizar colecciones.El marco Magento 2 en sí hace un uso intensivo de las colecciones.

De lo contrario, deberías implementar un módulo que defina una nueva interfaz de datos (es decir, el nuevo conjunto de atributos) para esa entidad.

Espero que arroje algo de luz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top