Magento Filter โดยการสร้างเวลา (วันนี้, เมื่อวาน, สัปดาห์, ชั่วโมง ฯลฯ )


9

ฉันมีคอลเลกชันที่กำหนดเองที่ฉันต้องการกรองตามวันที่สร้างและรายการ het ที่สร้างขึ้นเมื่อวาน

รายการสะสม

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

สร้างเมื่อวาน (ไม่ทำงาน)

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

ฉันได้ลองแล้ว แต่ให้ผลลัพธ์ที่ไม่ถูกต้อง

//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));

สร้างวันนี้ (วันปัจจุบัน) (งาน)

//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'))));

สร้างเมื่อสัปดาห์ที่ผ่านมา (งาน)

//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'))));

คำตอบ:


10

หากต้องการเพิ่มคำตอบ @Ashvin ..

ฉันได้รับรายการที่สร้างขึ้นภายในชั่วโมงที่ผ่านมา

$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);

และฉันได้รับผลงานเมื่อวานได้อย่างไร

$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

เราจะแก้ปัญหาได้อย่างไร ง่าย จำกัด จำนวนการสั่งซื้อที่แสดงในตารางคำสั่งซื้อใน 24 ชั่วโมงที่ผ่านมาเว้นแต่จะมีการร้องขอเป็นอย่างอื่น

ตัวอย่าง: - คัดลอกไฟล์ app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php ไปที่:

app / รหัส / ท้องถิ่น / Mage / Adminhtml / บล็อก / ขาย / สั่งซื้อ / Grid.php

แก้ไขฟังก์ชั่นต่อไปนี้คัดลอกวางจากที่นี่:

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;

}

ใช้รหัสเพิ่มเติมเพื่อถามคำถามของคุณ ... (วันนี้, เมื่อวาน, สัปดาห์, ชั่วโมง ฯลฯ )


go0d ทำงาน @ashvin
Amit Bera

เฮ้! สุดยอดทางออก! ฉันจะเปลี่ยนมันได้อย่างไรจึงจะใช้เวลาเพียงคำสั่งซื้อจากสองชั่วโมงที่ผ่านมา?
Vladimir Despotovic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.