$ _product-> setData()&的区别是什么? $ _product->保存()?

时间:2014-06-29 20:28:14

标签: magento wiki definition magento-1.8 difference

我找到了一些更新产品详情的代码

$_product->setData('manage_stock', 1);
$_product->setData('qty', $newQty);
$_product->save();

$ _product-> setData()& $ _product-> save()在这里?

3 个答案:

答案 0 :(得分:3)

$_product->setData('qty', 10);将值赋给列(qty等)。

$_product->save();将该值保存到数据库中。

答案 1 :(得分:2)

我会告诉你一个例子。假设我们的产品A默认为数量为1。现在我们需要以编程方式将产品的数量更改为5.因此,我们编写了以下代码。

没有save()

 $_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后可用的数量。

使用save()

 $_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该值将永久保存在数据库中,并且也可以显示在其他页面上。