gpt4 book ai didi

Magento 产品加载 - loadByAttribute 和 load 方法之间的区别

转载 作者:行者123 更新时间:2023-12-02 06:38:24 24 4
gpt4 key购买 nike

今天我再次与 Magento 战斗:)并且我发现了

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku);

$product = Mage::getModel('catalog/product')->load($product_id);

谁能解释一下这两种方法之间的区别吗?我发现,当我按 sku 加载产品时,当我“尝试使用更改后的数据重新保存它时,我会收到错误异常“Varien_Exception”,并显示消息“无效方法 Varien_Object::save in app\code\core\Mage”\CatalogInventory\Model\Observer.php(153): Varien_Object->__call('save', Array) 这是真的,因为一旦你尝试按 sku 加载,另一个观察者就会将产品的库存项目设置为 Varien_Object,这看起来像是陷阱,或者我只是不太明白,但是

我从一开始就每天进行 Magento 开发,所以我对系统了解很多,这对我来说是新的。提前致谢,Jaro。

最佳答案

有趣。虽然这两种方法都会为您提供一个具有完全加载的 EAV 数据的单个产品模型实例(假设 loadByAttribute() 的第三个参数未传递或者为 *),但观察者添加库存相关数据对于产品和产品集合来说是不同的,但这两个库存信息对象都被添加到产品数据键“stock_item”中。这是有争议的,但这感觉像是一个错误。我认为 Mage_CatalogInventory_Model_Observer::saveInventoryData()Mage_CatalogInventory_Model_Observer::_prepareItemForSave() 可以处理这个问题。

您可以通过使用 stock_item 对象在您的产品实例上完全设置产品库存项目来解决此问题。

关于Magento 产品加载 - loadByAttribute 和 load 方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com