$ model-> getOrigData();の違いは何ですか?そして$ model-> getData();?


8

モデルデータを取得する方法は2つあります。

$model->getData();
$model->getOrigData();

それらの違いは何ですか?どんな助けでもありがたいです。


2
気にしないで、私はそれを意味しなかった。なので、magentoの混乱している領域を明確にしたいだけです。最近、このeコマースプラットフォームを移動したからです。
スケシニ2013

回答:


10

getOrigData() オブジェクトが初期化/設定されたときのオブジェクトのデータを返します。

モデルが初期化されたら、そのデータを更新しgetData()て、そのオブジェクトに現在あるものを返すことができます。

見ていVarien_Object(がgetOrigDatasetOrigData)、grep -R "origData" app/あなたが使用されているものを見てすることができます。

EEでは、変更内容(Enterprise_Logging)モジュールをログに記録すると非常に便利です。


どうもありがとう。リソースも見つけました。alanstorm.com/magento_models_orm
スケシニ

15

これは、例で説明するのが最も簡単です。

$product = Mage::getModel('catalog/product')->load(123);
$product->getData('something'); // returns "foo"
$product->setData('something', 'bar');
$product->getData('something');     // returns "bar"
$product->getOrigData('something'); // returns "foo"

簡単に言えば、すべてのモデル(一度読み込まれると)は最初に読み込まれたデータのコピーを作成し、それをModel_Class::_origDataプロパティに格納します。これにより_beforeSave、クエリが変更されたデータのみを変更し、常に同じデータを書き換えないように、呼び出しの最適化を行うことができます。

また、setData()フラグを呼び出すたびに、モデルがデータを変更したことが設定されます。を呼び出して、モデルがデータを変更したかどうかを確認でき$model->hasDataChanges()ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.