我找到了一些更新产品详情的代码
$_product->setData('manage_stock', 1);
$_product->setData('qty', $newQty);
$_product->save();
$ _product-> setData()& $ _product-> save()在这里?
答案 0 :(得分:3)
$_product->setData('qty', 10);
将值赋给列(qty等)。
$_product->save();
将该值保存到数据库中。
答案 1 :(得分:2)
我会告诉你一个例子。假设我们的产品A默认为数量为1。现在我们需要以编程方式将产品的数量更改为5.因此,我们编写了以下代码。
$_product = Mage::Registry('current_product');
$qty_before = $_product->getQty();
$_product->setData('qty', 5);
$qty_after = $_product->getQty();
echo "Quantity Available before setting the quantity property =".$qty_before."<br>";
echo "Quantity Available after setting the quantity property =".$qty_after."<br>";
现在它将显示以下结果
在设置数量属性= 1之前可用的数量。
设置数量属性= 5后可用的数量。
现在我们已经注释掉了第三行代码,然后刷新了我们的页面。现在我们的结果将是这样的。
在设置数量属性= 1之前可用的数量。
设置数量属性= 5后可用的数量。
$_product = Mage::Registry('current_product');
$qty_before = $_product->getQty();
$_product->setData('qty', 5);
$qty_after = $_product->getQty();
$_product->save();
echo "Quantity Available before setting the quantity property =".$qty_before."<br>";
echo "Quantity Available after setting the quantity property =".$qty_after."<br>";
现在它将显示以下结果
在设置数量属性= 1之前可用的数量。
设置数量属性= 5后可用的数量。
现在,我们再次注释掉了第三行代码,然后刷新了我们的页面。现在我们的结果将是这样的。
在设置数量属性= 5之前可用的数量。
设置数量属性= 5后可用的数量。
那有什么区别?如果我们设置属性,则会更新该时间段的字段值。但实际上这个值并没有在数据库中保存。为了将数据保存到数据库,我们必须使用save()
方法。否则,Magento会忽略您setData()
所做的更改。
答案 2 :(得分:1)
如果您加载产品,然后只使用setData
作为任何属性,则产品将仅在该页面上临时显示该值。
但如果你使用。 $_product->save();
之后setData
该值将永久保存在数据库中,并且也可以显示在其他页面上。