簡體   English   中英

有人可以解釋這段magento代碼嗎?

[英]Can someone explain this snippet of magento code?

可能有人請解釋這個片段的Magento的代碼中發現的loadByCustomerId()在類Mage_Sales_Model_Mysql4_Quote

$read = $this->_getReadAdapter();
$select = $this->_getLoadSelect('customer_id', $customerId, $quote)
                ->where('is_active=1')
                ->order('updated_at desc')
                ->limit(1);
$data = $read->fetchRow($select);

當我var_dump($data)我看到它是一組客戶數據。 什么是與此$data數組關聯的模型? 謝謝。

Magento“模型”(意味着允許您與數據庫交互的實體,而不是通用服務器/域模型)有兩層。 第一個是“模型”層。 這包含與模型進行邏輯交互的方法。 (給我一個客戶的地址,下訂單等)。 第二層是“資源模型”層。 資源模型處理與數據庫(或更一般地,數據存儲或持久層等)的任何交互。

資源模型與數據庫交互的方式是通過適配器對象。 一個用於讀取信息,另一個用於寫入信息。

所以,你在Mage_Sales_Model_Mysql4_Quote類中。 這是一個資源模型。 它是Mage_Sales_Model_Quote對象的后端,實例化為

$model = Mage::getModel('sales/quote');

有了這條線

$read = $this->_getReadAdapter();

你得到了模型的讀取適配器的引用。 這將允許您對數據庫進行查詢。

有了這條線

$select = $this->_getLoadSelect('customer_id', $customerId, $quote)
                ->where('is_active=1')
                ->order('updated_at desc')
                ->limit(1);

您將獲得對此資源模型將用於加載sales/quote對象的SQL語句(也是對象)的sales/quote

//gets a reference
$this->_getLoadSelect('customer_id', $customerId, $quote)

然后,您正在調用該對象上的方法以使用其他邏輯來更改它

->where('is_active=1')
->order('updated_at desc')
->limit(1);

在偽sql中,查詢通常看起來像這樣

SELECT * FROM quote_table;

但是在調用這些方法之后,查詢看起來就像

SELECT * FROM quote_table
WHERE is_active = 1
ORDER BY updated_at desc
LIMIT 1;

最后,

$data = $read->fetchRow($select);

在這里,您使用先前提取的讀取適配器來查詢數據庫中查詢將獲取的特定報價項行。

_getReadAdapter()獲取只讀數據庫連接。 _getLoadSelect在模型(Mage_Sales_Model_Mysql4_Quote)主表上創建一個選擇查詢。 返回的數據只是來自SQL查詢的原始數據,不與任何特定的后端模型相關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM