1 of 2
Justin Blayney
  • 365
  • 2
  • 3
  • 12

update products based on attribute value

I am writing a cron job to update products, I cannot use SKU as that is magento only. For every product in magento I have an attribute 'auto_cool_number' I need to update it by that value (which is varchar).

I found this script on magepsycho which is awesome, it works great and updates my price and qty based on SKU, how can I modify the query to inner jOIN attribute values and update all products which share that attribute value.

function _updateStocks($data){ $connection = _getConnection('core_write'); $sku = $data[0]; $newQty = $data[1]; $productId = _getIdFromSku($sku); $attributeId = _getAttributeId();

$sql            = "UPDATE " . _getTableName('cataloginventory_stock_item') . " csi,
                   " . _getTableName('cataloginventory_stock_status') . " css
                   SET
                   csi.qty = ?,
                   csi.is_in_stock = ?,
                   css.qty = ?,
                   css.stock_status = ?
                   WHERE
                   csi.product_id = ?
                   AND csi.product_id = css.product_id";
$isInStock      = $newQty > 0 ? 1 : 0;
$stockStatus    = $newQty > 0 ? 1 : 0;
$connection->query($sql, array($newQty, $isInStock, $newQty, $stockStatus, $productId)); }

function _updatePrices($data){ $connection = _getConnection('core_write'); $sku = $data[0]; $newPrice = $data[2]; $productId = _getIdFromSku($sku); $attributeId = _getAttributeId();

$sql = "UPDATE " . _getTableName('catalog_product_entity_decimal') . " cped
            SET  cped.value = ?
        WHERE  cped.attribute_id = ?
        AND cped.entity_id = ?";
$connection->query($sql, array($newPrice, $attributeId, $productId)); }
Justin Blayney
  • 365
  • 2
  • 3
  • 12