За последние 24 часа нас посетили 6595 программистов и 529 роботов. Сейчас ищут 196 программистов ...

Снимать товар с публикации

Тема в разделе "Сделайте за меня", создана пользователем Junnior, 25 окт 2018.

  1. Junnior

    Junnior Новичок

    С нами с:
    16 авг 2018
    Сообщения:
    4
    Симпатии:
    0
    // Снимать c публикации, если товара нет в выгрузке
    $status_product = db_select('commerce_product', 'sp')// Находим все опубликованные товары.
    ->condition('sp.type', 'product')
    ->condition('sp.status', 1)
    ->fields('sp', ['sku'])
    ->execute();

    $product_sku = [];
    foreach ($status_product as $record){// Записываем результат в массив
    $product_sku[] = $record->sku;
    }

    $status = [];
    $result = array_diff($product_sku, array($known_skus[$sku])); // Находим артикулы, которых нет в выгрузке
    watchdog('proverka', 'Proverka @result', ['@result' => $result], WATCHDOG_DEBUG);
    foreach ($result as $key => $value){
    $status[] = $value;
    db_update('commerce_product')
    ->fields(array('status' => 0))
    ->condition('sku', $value)
    ->execute();
    watchdog('proverka', 'Снимаем с публикации. Товар с артикулом @value отсутствует в выгрузке', ['@value' => $value], WATCHDOG_DEBUG);
    }


    Добрый день, пытался сделать скрипт, который бы снимал товар с публикации если его нет в выгрузке. Делал вот так, не получается. В чём может быть проблема? подскажите пожалуйста!
     
  2. Artur_hopf

    Artur_hopf Новичок

    С нами с:
    7 май 2018
    Сообщения:
    152
    Симпатии:
    15
    PHP:
    1. foreach ($result as $key => $value){
    2.      $status[] = $value;
    3.      db_update('commerce_product')
    4.      ->fields(array('status' => 0))
    5.      ->condition('sku', $value)
    6.      ->execute();
    7.      watchdog('proverka', 'Снимаем с публикации. Товар с артикулом @value отсутствует в выгрузке', ['@value' => $value], WATCHDOG_DEBUG);
    8. }
    Так не делается, выньте из цикла update базы, можно искать по массиву, без цикла.