Magento product load - difference between loadByAttribute and load methods
magento
Solution
Interesting. While both methods will net you a single product model instance with fully loaded EAV data (provided the third parameter of `loadByAttribute()` is not passed or is `*`), the observers which add stock-related data are different for products vs. product collections, yet both stock information objects are added to the product data key "stock_item". It's debatable, but this feels like a bug. I would think that `Mage_CatalogInventory_Model_Observer::saveInventoryData()` or `Mage_CatalogInventory_Model_Observer::_prepareItemForSave()` would handle this.
You could resolve this issue by setting the product stock item fully on your product instance using the `stock_item` object.
Problem
today I'm fighting with Magento again :) and I found a difference between ``` $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku); ``` and ``` $product = Mage::getModel('catalog/product')->load($product_id); ``` Can anyone exaplain me a difference between these two approaches? I found that when I'm loading a product by sku then when I 'try to re-save it with changed data then I get error exception 'Varien_Exception' with message 'Invalid method Varien_Object::save in app\code\core\Mage\CatalogInventory\Model\Observer.php(153): Varien_Object->__call('save', Array) that's true because once you try to load by sku then another observer sets product's stock item as Varien_Object, that looks like pitfall or I just dont understand it enough, but I do daily Magento development from its beginnig so I know a lot about system and this is new for me. Thanks in advance, Jaro.