Сортировка по цене работает не так, как ожидалось на странице списка товаров magento 2.2.7
Когда я сортирую товар по цене заказа в Asc или dec. В списке продуктов показано, что первая цена продукта составляет 40, вторая цена продукта - 50, а третья цена продукта - 40.
Если я открыл и сохранил этот продукт по цене 50 в бэкэнде администратора, он работает нормально.
Все продукты имеют настраиваемые параметры. Когда я запускаю следующий скрипт, он работает нормально. Но этот скрипт удалит эти настраиваемые параметры.
<?php
use Magento\Framework\App\Bootstrap;
include 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$productCollection->load();
foreach($productCollection as $product)
{
$product->save();
}
echo "saved";
Найдите любые возможные способ устранить эту проблему. заранее благодарю
2 answers
Попробуйте загрузить параметры продукта в свою коллекцию. Коллекция продуктов не загружает параметры по умолчанию, так как они не используются в списках продуктов. Возможно, это повлияет на то, что вы делаете в своем коде.
$productCollection->addOptionsToResult()->load();
Попробуйте это,
<?php
use Magento\Framework\App\Bootstrap;
include 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$productCollection->addAttributeToSelect('*');
$productCollection->addAttributeToSort('price', 'ASC');
foreach($productCollection as $product){
$product = $objectManager->get('Magento\Catalog\Model\Product\Option')->getProductOptionCollection($product);
$product->save();
}
echo "saved";
Надеюсь, это поможет, мир:)