Bộ sưu tập bộ lọc Magento theo thời gian tạo (hôm nay, hôm qua, tuần, giờ, v.v.)


9

Tôi có một bộ sưu tập tùy chỉnh mà tôi muốn lọc theo ngày đã tạo và het các mục được tạo "ngày hôm qua"

Bộ sưu tập mục

//dates are set in controller using
setCreatedTime(Mage::getModel('core/date')->gmtDate()); 

Tạo ngày hôm qua (không hoạt động)

//3 products items Yesterday
//below filtering outputs incorrect entries
$collection = Mage::getModel('things/things')->getCollection();

Tôi đã thử, nhưng đầu ra các mục không chính xác;

//thought strtotime('yesterday') would work..
$collection->addFieldToFilter('created_time', array('gt' => Mage::getModel('core/date')->date('Y-m-d H:i:s', strtotime('yesterday'))));
$collection->addFieldToFilter('created_time', array('gt' => Mage::getModel('core/date')->date('Y-m-d H:i:s', strtotime('-1 day'))));
$collection->addFieldToFilter('created_time', array('from'=> strtotime('-1 day', time()),'to'=> time(),'datetime' => true));
$fromDate = date('Y-m-d H:i:s', strtotime($fromDate));
$toDate = date('Y-m-d H:i:s', strtotime($toDate));
$collection->addFieldToFilter('created_time', array('from'=>$fromDate, 'to'=>$toDate));

Tạo hôm nay (ngày hiện tại) (công trình)

//5 products items today with timestamp 2016-05-01 05:22:53
//below filtering outputs correct entries
$collection = Mage::getModel('things/things')->getCollection();
$collection->addFieldToFilter('created_time', array('gt' => Mage::getModel('core/date')->date('Y-m-d H:i:s', strtotime('today'))));

Đã tạo tuần trước (công trình)

//23 products items with timestamps for this week
//below filtering outputs correct entries
$collection = Mage::getModel('things/things')->getCollection();
$collection->addFieldToFilter('created_time', array('gt' => Mage::getModel('core/date')->date('Y-m-d H:i:s', strtotime('-1 week'))));

Câu trả lời:


10

Để thêm vào câu trả lời @Ashvin ..

Tôi đã nhận được các mục được tạo trong vòng một giờ qua

$things = Mage::getModel('things/things')->getCollection();
$things->addFieldToFilter('things_type', 'view');
$fromDate = date('Y-m-d H:i:s', strtotime('-1 hour'));
$toDate = date('Y-m-d H:i:s', strtotime(now()));
$things->addFieldToFilter('created_time', array(
    'from' => $fromDate,
    'to' => $toDate,
    'date' => true,
    ));
return count($things);

và làm thế nào tôi có các mục được tạo vào thứ năm;

$now = Mage::getModel('core/date')->timestamp(time());
$dateStart = date('Y-m-d' . ' 00:00:00', $now);
$dateEnd = date('Y-m-d' . ' 23:59:59', $now);
$things = Mage::getModel('things/things')->getCollection();
$things->addFieldToFilter('things_type', 'view');
$things->addFieldToFilter('created_time', array('from' => $dateStart, 'to' => $dateEnd));
return count($things);

5

Làm thế nào để chúng ta giải quyết nó? đơn giản. giới hạn số lượng đơn đặt hàng được trình bày trong lưới đơn hàng trong 24 giờ qua, trừ khi có yêu cầu khác.

Ví dụ: - Sao chép tệp ứng dụng / code / core / Mage / adminhtml / Block / Sales / Order / Grid.php sang:

ứng dụng / mã / cục bộ / Pháp sư / adminhtml / Chặn / Bán hàng / Đặt hàng / Grid.php

Chỉnh sửa chức năng sau, sao chép-dán từ đây:

protected function _prepareCollection()    {

$collection = Mage::getResourceModel($this->_getCollectionClass());

######################## FILTER BY LAST DAY ######################
$now = Mage::getModel('core/date')->timestamp(time());
$filter   = $this->getParam($this->getVarNameFilter(), null); //important - check for other requested grid-filters before filtering today's orders

$dateStart = date('Y-m-d' . ' 00:00:00', $now);
$dateEnd = date('Y-m-d' . ' 23:59:59', $now);
$postData = Mage::app()->getRequest()->getPost();
if (empty($filter)) {
$collection->addFieldToFilter('`main_table`.created_at', array('from' => $dateStart, 'to' => $dateEnd));
}
##################################################################



$collection->getSelect()->group('entity_id');
$this->setCollection($collection);

return $this;

}

sử dụng để thêm mã vào câu hỏi của bạn ... (hôm nay, hôm qua, tuần, giờ, v.v.)


go0d hoạt động @ashvin
Amit Bera

Chào! Giải pháp tuyệt vời! Làm thế nào tôi có thể thay đổi nó để chỉ mất các đơn đặt hàng từ hai giờ trước?
Vladimir Despotovic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.