Magento ফিল্টার সংগ্রহ তৈরির সময় দ্বারা (আজ, গতকাল, সপ্তাহ, ঘন্টা ইত্যাদি)


9

আমার একটি কাস্টম সংগ্রহ রয়েছে যা আমি তৈরি করা তারিখ অনুসারে ফিল্টার করতে চাই এবং হিট এন্ট্রিগুলি "গতকাল" তৈরি করেছে

সংগ্রহের এন্ট্রি

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

@ আশভিন উত্তর যোগ করতে ..

আমি গত এক ঘন্টার মধ্যে তৈরি এন্ট্রি পেয়েছি

$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 ঘন্টা ধরে অর্ডার গ্রিডে উপস্থাপিত অর্ডারের পরিমাণ সীমাবদ্ধ করা।

উদাহরণ: - অ্যাপ্লিকেশন / কোড / কোর / মাইজ / অ্যাডমিনটিচটিএমএল / ব্লক / বিক্রয় / আদেশ / গ্রিড.এফপি ফাইল এতে অনুলিপি করুন:

অ্যাপ্লিকেশন / কোড / স্থানীয় / পুরোনো যাদুকর / Adminhtml / ব্লক / বিক্রয় / ORDER / 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- এর কাজ করে
অমিত বেরা

হে! দুর্দান্ত সমাধান! আমি কীভাবে এটি পরিবর্তন করতে পারি যাতে এটি কেবল দুই ঘন্টা আগে থেকে অর্ডার নেয়?
ভ্লাদিমির দেশপোটোভিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.