Magento2 Заказать по пункту в коллекции
-
29-09-2020 - |
Вопрос
У меня есть пользовательская коллекция, к которой я добавляю фильтры.Например, у меня есть это:
$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;
. Не связан с magento.stackexchange