Получить новый пустой элемент на методе модели
-
16-10-2019 - |
Вопрос
Коллекции предоставляют удобный способ получить пустую модель - например:
$quote->getItemsCollection()->getNewEmptyItem();
Есть ли какие -либо средства для этого из существующей модели без необходимости призывать к коллекции - другими словами непосредственно из экземпляра? Что-то вроде этого:
$product = Mage::getModel('catalog/product')->load(43);
$productNew = $product->getNewEmptyItem();
Я понимаю, что могу позвонить getCollection()
Сначала на продукте - не уверен, есть ли это накладные расходы.
Редактировать:
Очевидно $product = Mage::getModel('catalog/product');
дает желаемый результат. Очевидно. Анкет То, что я ищу, является средством получения пустого объекта без переоценки модели.
Возможно, мне просто нужно переключиться на использование синглтонов, чтобы облегчить мой разум.
Решение
Вы можете использовать Reset ();
Mage::getModel('catalog/product')->load(1)->reset();
Это вызывает _cleardata, если вы зарегистрируетесь в mage_catalog_model_product, вы можете увидеть, что эта функция сбрасывает все переменные.
Другие советы
А reset()
Метод доступен для Mage_Catalog_Model_Product
Но в целом это недоступно.
Вы можете добавить такой метод, как это:
public function reset() {
return new self();
}
Однако вы не может Затем позвоните:
$modelInstance->reset();
Вы должны были бы позвонить:
$modelInstance = $modelInstance->reset();
Из -за этого, на мой взгляд, иметь свой собственный reset()
Метод приведет к неправильному использованию и/или может запутать других разработчиков. Вам лучше сделать что -то подобное:
$modelInstance = new $modelInstance;
Разве это не работает через clearInstance
функционировать на Mage_Core_Model_Abstract
. Анкет Похоже, это очищает ссылки и данные, плюс это также запускает событие:
Mage::dispatchEvent($this->_eventPrefix.'_clear', $this->_getEventData());
Может быть, я что -то здесь упускаю.