1
有沒有一個快速的方法來編程檢查當前登錄的客戶是否曾下過訂單?我正在寫觀察員,並且我想簡單地說一下Magento - 檢查客戶的第一個訂單
if ($this->isCustomerLoggedIn() && (has never placed an order))
{
do this
}
可能嗎? 謝謝!
有沒有一個快速的方法來編程檢查當前登錄的客戶是否曾下過訂單?我正在寫觀察員,並且我想簡單地說一下Magento - 檢查客戶的第一個訂單
if ($this->isCustomerLoggedIn() && (has never placed an order))
{
do this
}
可能嗎? 謝謝!
$orders = Mage::getResourceModel('sales/order_collection')
->addFieldToSelect('*')
->addFieldToFilter('customer_id', $customer->getId());
if ($this->isCustomerLoggedIn() && (!$orders->getSize()))
{
// has never placed an order
}
上述假設你有一個$customer
,但如果不是從事件訪問你通常可以得到當前登錄的用戶有:
$customer = Mage::getSingleton('customer/session')->getCustomer();
你需要創建一個事件?
$session = Mage::getModel('customer/session');
$order = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('customer_id',$session->getId())->getFirstItem();
工作就像一個魅力......謝謝! – bonhommie 2011-03-18 21:14:58
絕對似乎工作,但如果我們只是想獲得一個計數,我似乎記得有一種方法來查詢該計數,而不是檢索可能大量的完整對象。至少,難道你不能將你選擇的字段縮減爲order_id,以儘量減少網絡延遲? – 2011-03-18 23:35:17
@Joseph - getSize()使用內部的getSelectCountSql()方法來檢索沒有任何分頁或限制的計數。唯一要求的字段是'*',以便它變成'COUNT(*)'。它是加載對象的集合'count()'。 – clockworkgeek 2011-03-19 01:02:49