我想让Magento的客户归还前一天创建的客户或前一天更新的客户。我尝试使用addFieldToFilter,没有任何成功。
我也试图操纵Zend_Db_Select,但没有成功。
所以现在我被卡住了!
以下是我的一些尝试:
$customer = Mage::getModel('customer/customer');
$customers = $customer
->getCollection()
->getSelect()
->where("updated_at >= ? AND updated_at <= ?",$this->getFrom(), $this->getTo())
->orWhere("e.created_at >= ? AND e.created_at <= ?", $this->getFrom(), $this->getTo());
或者
->addFieldToFilter(
array(
array('attribute'=>'updated_at', 'gteq'=>$this->getFrom()),
array('attribute'=>'created_at', 'gteq'=>$this->getFrom())
),
'',
'left'
);
由于
答案 0 :(得分:2)
使用 updated_at 作为过滤器属性就足够了,因为它在创建用户时设置为当前日期时间。因此,通过使用此字段进行过滤,您将获得新用户和非新用户但在给定时间段内更新的用户。以下是查找过去24小时内更新或创建的用户的代码:
$customers = Mage::getModel('customer/customer')->getCollection();
$customers->addAttributeToFilter('updated_at', array('gt' => date("Y-m-d H:i:s", time()-60*60*24)));
foreach($customers as $customer) {
//do sth
}
答案 1 :(得分:2)
我建议不要直接操作选择,除非绝对必要,你确切知道你的Magento版本中幕后发生了什么。
以下语法应该为您处理棘手的部分
$c = Mage::getModel('customer/customer')
->getCollection()
->addAttributeToFilter(array(
array('attribute'=>'updated_at','from'=>'2010-05-12','to'=>'2010-05-30'),
array('attribute'=>'created_at','from'=>'2010-05-12','to'=>'2010-05-13')
));
var_dump( (string) $c->getSelect());
var_dump(count($c));
您需要做的只是放入您想要的日期范围。
答案 2 :(得分:0)
感谢Alan和Silvo,这是我写的:
->addAttributeToFilter(array(
array('attribute'=>'updated_at','from'=>$this->getFrom(),'to'=>$this->getTo())
));
这两个答案都很有用。谢谢!