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