Magento2 Ordenar por cláusula na coleção
-
29-09-2020 - |
Pergunta
Tenho uma coleção personalizada à qual adiciono filtros.Por exemplo, eu tenho isso:
$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
Qual filtro devo adicionar ao $giftColletion para que ele retorne todos os registros por campo posição na ordem ASC?
Solução
Você pode tentar isso
$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
setOrder
é usado para classificar
Outras dicas
De acordo com \Magento\Catalog\Model\ResourceModel\Product\Collection
você pode usar addAttributeToSort()
método para classificar sua coleção.
Isso tem funcionado para mim:
$collection = $this->_collection ->create() ->addAttributeToSelect(['sku', 'name', 'image']) ->addCategoryFilter($category) ->addAttributeToSort('name') ->setPageSize($limit); return $collection;
Use qualquer atributo pelo qual você precisa que sua coleção seja classificada em vez de 'name'
no meu exemplo.Você também pode especificar a direção do pedido como o segundo parâmetro; o padrão é ASC
.
Tente isso,
$page = ($this->getRequest()->getParam('p')) ? $this->getRequest()->getParam('p') : 1;
$pageSize = 10;
$allMagazines = $this->MagazineFactory->create()->getCollection();
$allMagazines->addFieldToFilter('is_enable', 1);
$allMagazines->setOrder('sort_order','ASC');
$allMagazines->setPageSize($pageSize);
$allMagazines->setCurPage($page);
return $allMagazines;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange