2

我需要为数千种产品打开“管理库存”选项。我正在使用 PHP 来更新 Magento 表。我只需要帮助确定要更新的表和字段。这些字段是:

管理库存
数量 商品状态变为缺货
购物车中允许的最小数量
通知以下数量

我相信它们可能在 catalog_product_entity_int 但我不知道什么值与哪个值相关。

4

3 回答 3

3

manage stock 选项有它自己的 colcataloginventory_stock_item 如果你想通过 mysql 来做这个,你可以这样做。

有 2 个选项,不确定哪个最适合您。

如果系统配置System->Inventory->Product Stock Options->Manage Stock设置为yes,很多人只想更新use_config_manage_stock

UPDATE 
    cataloginventory_stock_item 
SET 
    use_config_manage_stock = 1

另一种方法是为每个产品单独设置

UPDATE
    cataloginventory_stock_item 
SET 
    use_config_manage_stock = 0, 
    manage_stock = 1

运行这些查询后,您应该重新索引“库存状态”

于 2013-09-27T09:15:22.513 回答
2

您正在搜索Mage_CatalogInventory_Model_Stock_Item模型:

$sProductId = 911;
$oStockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($sProductId);
var_dump($oStockItem->getData());

Sample output:
["item_id"]=> string(4) "911"
["product_id"]=> string(4) "911"
["stock_id"]=> string(1) "1"
["qty"]=> string(6) "0.0000"
["min_qty"]=> string(7) "-3.0000"
["use_config_min_qty"]=> string(1) "1"
["is_qty_decimal"]=> string(1) "0"
["backorders"]=> string(1) "0"
["use_config_backorders"]=> string(1) "1"
["min_sale_qty"]=> string(7) "10.0000"
["use_config_min_sale_qty"]=> string(1) "1"
["max_sale_qty"]=> string(6) "0.0000"
["use_config_max_sale_qty"]=> string(1) "1"
["is_in_stock"]=> string(1) "0"
["low_stock_date"]=> string(19) "2013-06-28 01:02:34"
["notify_stock_qty"]=> string(6) "0.0000"
["use_config_notify_stock_qty"]=> string(1) "1"
["manage_stock"]=> string(1) "1"
["use_config_manage_stock"]=> string(1) "1"
["stock_status_changed_auto"]=> string(1) "1"
["use_config_qty_increments"]=> string(1) "1"
["qty_increments"]=> string(6) "0.0000"
["use_config_enable_qty_inc"]=> string(1) "1"
["enable_qty_increments"]=> string(1) "0"
["type_id"]=> string(6) "simple"
["stock_status_changed_automatically"]=> string(1) "1"
["use_config_enable_qty_increments"]=> string(1) "1"

启用管理库存(或任何其他属性)的示例代码:

$sProductId = 911;
$oStockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($sProductId);
$sStockId = $oStockItem->getId();
$aStock = array();
if (!$sStockId) {
    $oStockItem
        ->setProductId($sProductId)
        ->setStockId(1);
}
else {
    $aStock = $oStockItem->getData();
}

$aStock['manage_stock'] = 1;
// $aStock['use_config_manage_stock'] = 1;

foreach ($aStock as $k => $v) {
    $oStockItem->setData($k, $v);
}

$oStockItem->save();
于 2013-09-27T07:46:03.990 回答
0

桌子 :cataloginventory_stock_item

manage_stock将值更新为 1 并将use_config_manage_stock值更新为 0

于 2013-09-27T07:16:33.183 回答