Сортировка по цене работает не так, как ожидалось на странице списка товаров 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";

Найдите любые возможные способ устранить эту проблему. заранее благодарю

Author: Arunprabakaran M, 2019-02-15

2 answers

Попробуйте загрузить параметры продукта в свою коллекцию. Коллекция продуктов не загружает параметры по умолчанию, так как они не используются в списках продуктов. Возможно, это повлияет на то, что вы делаете в своем коде.

$productCollection->addOptionsToResult()->load();

 1
Author: HelgeB, 2019-02-15 08:39:30

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

<?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";

Надеюсь, это поможет, мир:)

 1
Author: Prathap Gunasekaran, 2019-02-15 10:08:04