Вопрос

У меня есть пользовательская коллекция, к которой я добавляю фильтры.Например, у меня есть это:

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
.

Какой фильтр должен добавить в $ GiftCollection, чтобы он мог вернуть все записи по полю Position в ASC Order?

Это было полезно?

Решение

Вы можете попробовать это

$giftColletion = $this->_giftFactory->getCollection();
$giftColletion->addFieldToFilter('store_id', 1);
$giftColletion->setOrder('position','ASC');
.

setOrder используется для сортировки

Другие советы

Согласно \Magento\Catalog\Model\ResourceModel\Product\Collection, вы можете использовать метод addAttributeToSort() для сортировки вашей коллекции.

Это работало для меня:

$collection = $this->_collection
    ->create()
    ->addAttributeToSelect(['sku', 'name', 'image'])
    ->addCategoryFilter($category)
    ->addAttributeToSort('name')
    ->setPageSize($limit);
return $collection;
.

Используйте любой атрибут, который вам нужен ваша коллекция, чтобы быть отсортированы вместо 'name' в моем примере. Вы также можете указать направление заказа в качестве второго параметра, он по умолчанию для ASC.

Попробуйте это,

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top