EAVモデルの_data


9

単純なモデル(たとえば、cataloginventory/stock_item)の_dataは、データベーステーブルのフィールドに対応するフィールドと値のペアの配列であることを理解しています。EAVモデルの_dataの内容を知りたいと思ったのでcatalog/product、debug()関数を使用して_dataを確認しました。

その結果、のフィールド値ペアとcatalog_product_entity、このエンティティのいくつかの属性が含まれていることがわかりました。彼らは私には理にかなっています。私が理解できない点は、ペアも含まれているということです:

...    
[stock_item (Mage_CatalogInventory_Model_Stock_Item)] => Array
            (
                [item_id] => 1
                [product_id] => 1
                [stock_id]
                ......
            )
...

、のインスタンスですcataloginventory/stock_item。これはカタログ/製品エンティティの属性でも、のフィールドでもありませんcatalog_product_entity。なぜ含まれているのですか?

EAVモデルの_dataの規則はありますか?

回答:


6

理論的に_dataは何でも含むことができます。
を使用して、そこにカスタム値を追加できますsetData($key, $value)
通常、あなたが言ったように、テーブルの列の値、またはEAVエンティティの場合は属性の値が含まれますが、特定の場合には他の値が含まれることがあります。
これは、たとえば製品で発生します。
これが理由です。
モジュールMage_CatalogInventoryには、イベントのオブザーバーがありますcatalog_product_load_after。このイベントは、を呼び出すたびに呼び出されます$product->load()
実行されるメソッドはMage_CatalogInventory_Model_Observer::addInventoryDataです。
これはと呼びます$productStockItem->assignProduct($product);
さらに深く掘り下げるMage_CatalogInventory_Model_Stock_Item::assignProductと、ある時点でその呼び出しが発生し$product->setStockItem($this);ます。これはと同等$product->setData('stock_item', $this)です。
あなたがそうのインスタンスに終わるMage_CatalogInventory_Model_Stock_Item中を_data['stock_item']

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