_data ของรูปแบบ EAV


9

ฉันเข้าใจว่า _data ของโมเดลที่เรียบง่าย (เช่นcataloginventory/stock_item) เป็นอาร์เรย์ของคู่ของค่าฟิลด์ซึ่งสอดคล้องกับฟิลด์ของตารางฐานข้อมูล ฉันอยากรู้ว่าเนื้อหาของ _data สำหรับรุ่น EAV ดังนั้นฉันจึงตรวจสอบ _data ของการcatalog/productใช้ฟังก์ชัน debug ()

การค้นหาคือมันมีคู่ค่าเขตข้อมูลของ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ทำไมจึงถูกรวมอยู่ด้วย

มีแบบแผนของ _data สำหรับรุ่น EAV หรือไม่?

คำตอบ:


6

ในทางทฤษฎี_dataสามารถมีอะไรก็ได้ คุณสามารถเพิ่มค่าที่กำหนดเองของคุณมีโดยใช้
โดยปกติจะมีอย่างที่คุณกล่าวไว้ค่าสำหรับคอลัมน์ในตารางหรือสำหรับแอตทริบิวต์ในกรณีที่เป็นเอนทิตี EAV แต่สำหรับบางกรณีสามารถมีค่าอื่นได้ สิ่งนี้เกิดขึ้นกับผลิตภัณฑ์เช่น นี่คือเหตุผล ในโมดูลมีผู้สังเกตการณ์สำหรับเหตุการณ์ เหตุการณ์นี้ถูกเรียกว่าทุกครั้งที่คุณโทร วิธีการดำเนินการคือ สิ่งนี้เรียกว่า ถ้าเราขุดลึกเราจบลงในสายที่จุดหนึ่ง นี่คือ eqivalent ไป ดังนั้นคุณท้ายมีตัวอย่างของในsetData($key, $value)



Mage_CatalogInventorycatalog_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.