0

我真的需要检查特定客户在购物车中有哪些产品(或仅如果有)。

我想创建一个 cron 任务来检查客户是否打开购物车早于例如 2 天,然后向他发送一封带有提醒消息的邮件。我有一个客户数组:

$collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('*');
$customers = array();
foreach ($collection as $customer) {
    $customers[] = $customer->toArray();

但是两天来我找不到检查每个购物车物品的方法。我试过了:

foreach ($customers as $item) {

   $quote = Mage::getModel('sales/quote')->loadByCustomer($item['entity_id']);

   if ($quote) {
       $collection = $quote->getItemsCollection(false);
   }
   else {
       echo '<script type="text/javascript">alert("test")</script>';
   }
   print_r($collection);
   foreach ($collection as $tmp)
       echo $tmp->getQty();
}

我还尝试了更多,但对我没有任何作用:/我也不知道如何打印返回的项目,数组中的每个字段都受到保护。

如果可以或您只认为可以,请提供帮助;) Google 没有提供帮助。谢谢

4

1 回答 1

0

我相信您正在使用 Magento 社区,因为 Enterprise 已经有一个废弃的购物车提醒。如果您有权访问 Enterprise,您可以在此处找到代码: Enterprise_Reminder_Model_Rule_Condition_Cart::_prepareConditionsSql($customer, $website) 此方法使用 magento 资源读取适配器创建原始 sql 并添加不同的条件来验证购物车是否被放弃,您可以看到其中一些如下(不要忘记检查 quote.updated_at )

$select = $this->getResource()->createSelect();
$select->from(array('quote' => $table), array(new Zend_Db_Expr(1)));
...
$select->where('quote.is_active = 1');
$select->where($this->_createCustomerFilter($customer, 'quote.customer_id'));
...

我希望这段摘录能帮助你开始,我不知道我是否可以在这里发布来自 Enterprise 的代码。

于 2013-07-04T13:06:41.127 回答