Какова хорошая практика для получения моделей ресурсов/коллекций?
Какой из них более правильный:
Маг::getresourcemodel() или
Маг::getModel ('каталог/продукт')->Получить коллекцию()
Я всегда использую первый метод, если только у меня уже нет модели, на которой я могу вызвать getCollection. Мне просто интересно, есть ли в этом какие-либо преимущества/недостатки.
2 answers
Методы Mage_Core_Model_Abstract::getResource()
и Mage_Core_Model_Abstract::getCollection()
являются просто удобными ярлыками, если вы хотите получить модель ресурсов или коллекцию для существующего экземпляра модели.
В конечном итоге они вызывают Mage::getResourceModel()
, поэтому, если у вас еще нет созданной модели, более простой способ создать экземпляр коллекции или модели ресурсов - использовать Mage::getResourceModel()
напрямую. Результат всегда один и тот же.
Маг::Получить модель()
Mage::getModel() будет создавать новый экземпляр объекта каждый раз, когда даже такой объект существует в конфигурации.
Пример
$product1 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');
$product1 и $product2 имеют разные моменты времени одного и того же объекта, а также занимают разную память
Маг::Модель getresourcemodel()
Насколько я знаю, все коллекции в Magento являются моделями ресурсов. Они создаются
Mage::getResourceModel()
Или
Mage::getModel()->getCollection()
Это не так действительно имеет значение, какую функцию вы используете; последняя просто вызывает первую. Команда Magento просто решила сделать коллекции частью ресурса, вероятно, потому, что коллекциям нужно часто запрашивать базу данных. Обычно вам не придется вызывать Mage::getResourceModel()
ни для чего другого, кроме коллекций.