В чем разница между этими двумя синтаксисами?
1) Mage::getModel('catalog/product')->load('1');
2) Mage::getResourceModel('catalog/product')
Mage :: getModel ()
Mage :: getModel () будет создавать новый экземпляр объекта каждый раз, когда такой объект существует в конфигурации.
пример
$product1 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');
$ product1 и $ product2 оба имеют разное мгновение одного и того же объекта и также занимают разную память
Mage :: getResourceModel ()
Насколько я знаю, все коллекции в Magento являются моделями ресурсов. Они созданы
Mage::getResourceModel()
или же
Mage::getModel()->getCollection()
Неважно, какую функцию вы используете; последний просто называет первый. Команда Magento просто решила сделать коллекции частью ресурса, возможно потому, что коллекции должны часто запрашивать базу данных. Обычно вам не нужно будет звонить Mage::getResourceModel()
для чего-то еще, кроме коллекций.
Смотрите ссылку ниже.
http://alanstorm.com/magento_models_orm
модели : Модели, где ваша основная бизнес-логика должна обрабатываться и является единичным экземпляром объекта. Модель будет использовать модель ресурсов для связи с базой данных и получения / установки данных для нее в save () и load ().
Модель ресурсов : Модель ресурсов — это место, где происходит ваш главный C.R.U.D (создание, чтение, обновление и удаление). Модель ресурсов не должна содержать бизнес-логику, однако она будет взаимодействовать с адаптерами и в основном взаимодействовать с базой данных.