我正在使用此代码获取所有废弃的购物车。
$storeIds = array(1);
$collection = Mage::getResourceModel('reports/quote_collection');
$collection->prepareForAbandonedReport($storeIds);
$collection->load();
我想要的是,为了让购物车不超过某个特定日期,我也尝试过以下代码来实现它,但它不起作用。
$collection->addFieldToFilter(array("main_table.created_at"=>Mage::getModel('core/date')->date('Y-m-d H:i:s', strtotime('-1 week'))));
另外一件事我怎么能addAttributeToselect()来获取所需的数据,而不是全部。如果有人也可以提供其他一些过滤器示例的答案,那将非常感激。谢谢提前
答案 0 :(得分:1)
所以经过很多搜索后我终于找到了办法。函数prepareForAbandonedReport()正在执行所有过滤步骤,因此我打开包含此函数的文件,复制其代码并在我的代码中使用它并根据我的需要对其进行更改。这是我使用的代码,我希望这会对某人有所帮助。
$collection = Mage::getResourceModel('reports/quote_collection')
->addFieldToFilter('items_count', array('neq' => '0'))
->addFieldToFilter('main_table.is_active', '1')
->addFieldToFilter('main_table.created_at', array('gt' => date("Y-m-d H:i:s", strtotime('-2 month'))))
->addSubtotal($storeIds, null)
->addCustomerData(null)
->setOrder('updated_at')
->addFieldToFilter('store_id', array('in' => $storeIds));
$collection->load();
答案 1 :(得分:0)
请使用以下代码,这可能有所帮助 -
$collection = Mage::getResourceModel('reports/quote_collection');
$collection->prepareForAbandonedReport();
$output = $collection->load()->toArray();
答案 2 :(得分:0)
由于此答案对我有很大帮助,因此我将分享我自己的解决方案(在Magento EE 1.13.1.0中进行了测试):
Mage_Reports_Model_Resource_Quote_Collection
创建_filterDate()
方法:
public function _filterDate($key, $filter)
{
if (array_key_exists($key, $filter)) {
$filterDate = $filter[$key];
if (array_key_exists('from', $filterDate)) {
$fromRawDate = $filter[$key]['from'];
$dateFrom = str_replace('/', '-', $fromRawDate);
$dateStart = date('Y-m-d', strtotime($dateFrom)) . ' 00:00:00';
}
if (array_key_exists('to', $filterDate)) {
$toRawDate = $filter[$key]['to'];
$dateTo = str_replace('/', '-', $toRawDate);
$dateEnd = date('Y-m-d', strtotime($dateTo)) . ' 23:59:59';
}
if ( ! empty($dateStart) && ! empty($dateEnd) ) {
$this->addFieldToFilter('`main_table`.`' . $key . '`', array('from' => $dateStart, 'to' => $dateEnd));
} else if ( ! empty($dateStart) && empty($dateEnd) ) {
$this->addFieldToFilter('`main_table`.`' . $key . '`', array('from' => $dateStart));
} else if ( ! empty($dateEnd) && empty($dateStart) ) {
$this->addFieldToFilter('`main_table`.`' . $key . '`', array('to' => $dateEnd));
}
}
}
编辑prepareForAbandonedReport()
并使用_filterDate()
:
public function prepareForAbandonedReport($storeIds, $filter = null)
{
self::_filterDate('created_at', $filter); // Used to filter created_at field
self::_filterDate('updated_at', $filter); // Used to filter updated_at field
$this->addFieldToFilter('items_count', array('neq' => '0'))
->addFieldToFilter('main_table.is_active', '1')
->addSubtotal($storeIds, $filter)
->addCustomerData($filter)
->setOrder('updated_at');
if (is_array($storeIds) && !empty($storeIds)) {
$this->addFieldToFilter('store_id', array('in' => $storeIds));
}
return $this;
}