Какова хорошая практика для получения моделей ресурсов/коллекций?


Какой из них более правильный:
Маг::getresourcemodel() или
Маг::getModel ('каталог/продукт')->Получить коллекцию()

Я всегда использую первый метод, если только у меня уже нет модели, на которой я могу вызвать getCollection. Мне просто интересно, есть ли в этом какие-либо преимущества/недостатки.

Author: Domeglic, 2016-02-12

2 answers

Методы Mage_Core_Model_Abstract::getResource() и Mage_Core_Model_Abstract::getCollection() являются просто удобными ярлыками, если вы хотите получить модель ресурсов или коллекцию для существующего экземпляра модели.

В конечном итоге они вызывают Mage::getResourceModel(), поэтому, если у вас еще нет созданной модели, более простой способ создать экземпляр коллекции или модели ресурсов - использовать Mage::getResourceModel() напрямую. Результат всегда один и тот же.

 6
Author: Fabian Schmengler, 2016-02-14 19:58:47

Маг::Получить модель()

Mage::getModel() будет создавать новый экземпляр объекта каждый раз, когда даже такой объект существует в конфигурации.

Пример

$product1 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');

$product1 и $product2 имеют разные моменты времени одного и того же объекта, а также занимают разную память

Маг::Модель getresourcemodel()

Насколько я знаю, все коллекции в Magento являются моделями ресурсов. Они создаются

Mage::getResourceModel() 

Или

Mage::getModel()->getCollection()

Это не так действительно имеет значение, какую функцию вы используете; последняя просто вызывает первую. Команда Magento просто решила сделать коллекции частью ресурса, вероятно, потому, что коллекциям нужно часто запрашивать базу данных. Обычно вам не придется вызывать Mage::getResourceModel() ни для чего другого, кроме коллекций.

Ссылка

 5
Author: Qaisar Satti, 2017-05-23 12:37:16