题
收藏提供了一种方便的手段来获取空白模型 - 例如:
$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());
也许我在这里错过了一些东西。