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?

Foi útil?

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
scroll top