// Снимать 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); } Добрый день, пытался сделать скрипт, который бы снимал товар с публикации если его нет в выгрузке. Делал вот так, не получается. В чём может быть проблема? подскажите пожалуйста!
PHP: 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); } Так не делается, выньте из цикла update базы, можно искать по массиву, без цикла.