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.