EAV表更新走的屬性我已經加入到customer_entity
表中的新列名爲source
,我想通過管理員的形式來維持。這意味着我將使用客戶模型來更新該值;不過,我已經瞭解到,它不適用於EAV模型。所以我不能撥打$model->setData('source')->save()
,因爲這個值沒有存儲在屬性表中。跳過在Magento
你可能會問,「爲什麼不將其存儲爲一個屬性?」有幾個原因。最重要的是,我正在通過資源適配器爲報表加入表格數據。我一直在尋找寫有「萬能選擇」查詢來自兩個_entity
桌子,和服務簡單的模型讀取。
因此,這裏是我的問題:
進行更改時要在Magento,Mage_Eav_Model_Entity_Abstract::walkAttributes
被通過_afterSave
方法引發的抽象方法的EAV模型。據我瞭解,這將調用任何註冊的後端模型來處理CRUD操作。
我不希望這種事情發生。就我而言,我正在使用Mage_Customer_Model_Entity_Customer
資源模型。我打電話給其寫適配器手動執行UPDATE
查詢,以維持source
值。但它似乎觸發了保存附屬於該客戶的地址的呼叫。這表現爲對客戶的註冊後端模式的結果屬性被觸發:
Mycompany_Customer_Model_Entity_Customer {
...
public function setSource($customerId,$source=null) {
$data=array(
'entity_id' => $customerId,
'source' => $source
);
Mage::getSingleton('core/resource')->getConnection('core_write')
->query("UPDATE `{$this->getEntityTable()}` SET `source`=? WHERE `entity_id`=?",$data);
}
...
}
爲什麼會出現這種觸發屬性走?我怎樣才能防止這一點?