Корректный апдейт цены Есть решение

Ребят, подскажите, какой класс использовать и метод, если нужно обновить цену, в режиме нескольких характеристик.

Есть классы моделей shopProductModel и shopProductSkusModel , как корректно при таком режиме обновлять цену на все позиции (Virtual Sku), в случаи, если 1 артикул?

2 ответа

  • 3
    Леонид Вакуленко 26 декабря 2014 05:09 # Решение

    Поиграйтесь в приложении Developer вот с таким кодом:

    wa('shop')->setActive('shop');
    
    // Объект для работы с продуктом по указанному product_id
    $p = new shopProduct(704);
    
    // Массив артикулов, sku_id => array
    $skus = $p['skus'];
    //wa_dump($skus); // удобно посмотреть
    
    // Цена указывается в валюте товара: $p['currency'].
    // Если $p['currency'] === null, значит, используется валюта магазина по умолчанию,
    // т.е. wa()->getConfig()->getCurrency().
    $skus[1586]['price'] = 20;
    
    // Сохранение
    $p['skus'] = $skus;
    $p->save();
    

    Если нужно обновить один продукт, такой способ подходит как нельзя лучше. Но если у вас большой прайс-лист и обновление в цикле, то будет слишком медленно. Если так, придётся писать свой код для обновления напрямую через модели. Суть такая: обновить shop_product_skus.price и shop_product_skus.primary_price (они могут быть в разных валютах, см. как это делается в shopProductSkusModel->setData()), а также shop_product.price, shop_product.min_price, shop_product.max_price (см. shopProductModel->correct()).

  • 1
    Minya Jam 26 декабря 2014 05:35 #

    Исчерпывающий ответ. Благодарю.

Эта тема в архиве. Добавление комментариев к ней отключено.