2016-05-01 5 views
1

Ich habe eine benutzerdefinierte Sammlung, die ich erstellt Datum und het Einträge filtern möchten erstellt „gestern“Magento Filter Sammlung von Zeiten bilden (heute, gestern, Woche, Stunde usw.)

Sammlung Einträge

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

Erstellt Gestern (nicht funktioniert)

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

Ich habe versucht, aber gibt falsche Einträge aus;

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

Erstellt Heute (aktueller Tag) (Werke)

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

Erstellt vergangenen Woche (Werke)

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

Antwort

1

Versuchen Sie es addFieldToFilter zu addAttributeToFilter ändern. Die folgende Methode ist normalerweise, wie ich das Filtern nach Datum für eine Sammlung mache. Beachten Sie, dass die Eigenschaft date auf true festgelegt ist.

$collection = Mage::getModel('things/things')->getCollection(); 
$collection->addAttributeToFilter('created_time', array(
     'from' => $fromDate, 
     'to' => $toDate, 
     'date' => true, 
     )); 

Sie können auch die Abfrage sehen für das Debuggen, indem Sie folgende erzeugt wird

echo $collection->getSelect()->__toString(); 
+0

Dank @Ash für Ihre Eingabe – BENN1TH

1

Antwort auf @Ash Hinzufügen, siehe unten, wie;

Ich habe Einträge innerhalb der letzten Stunde erstellt

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

und wie ich yesterdays erstellt Einträge bekam;

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