モデルメソッドで新しい空のアイテムを取得します
-
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());
たぶん私はここで何かが欠けています。