2010-03-24 3 views
1

Dans Magento, je crée un module personnalisé et aimerais être capable de filtrer automatiquement par la colonne datetime de sorte que la grille initiale affiche uniquement les entités liées à "aujourd'hui" date.Magento Définir la grille à filtrer automatiquement par jour en utilisant la colonne datetime existante dans la grille

Voici ma colonne datetime:

$this->addColumn('ts', array(
    'header' => $hlp->__('Activated'), 
    'align'  => 'left', 
    'index'  => 'ts', 
    'type'  => 'datetime', 
    'width'  => '160px', 
)); 

Je pense qu'il devrait y avoir un moyen pour moi d'ajouter simplement un filtre à la collection comme ceci:

$now = Mage::getModel('core/date')->timestamp(time()); 
$dateTime = date('m/d/y h:i:s', $now); 

$collection = Mage::getModel('mymodule/items')->getCollection() 
    ->addFieldToFilter('ts', $dateTime); 

Mais ce n » t travail?

Est-ce que j'utilise le mauvais filtre? Mon champ "ts" dans la base de données est un champ "datetime", mais les sélecteurs magento "From:" - "To:" par défaut n'utilisent pas les heures, minutes, secondes.

Des idées?

Merci, Tegan

+1

Je viens d'essayer de faire quelque chose comme ça et ça n'a pas non plus: $ collection -> addFieldToFilter ('ts', array ('from' => '03/24/10 00:00:00 ',' to '=> '03/24/10 00:00:00')); –

Répondre

9

Cela semble fonctionner. J'ai mal formaté mon heure.

$now = Mage::getModel('core/date')->timestamp(time()); 
$dateStart = date('Y-m-d' . ' 00:00:00', $now); 
$dateEnd = date('Y-m-d' . ' 23:59:00', $now); 

$collection = Mage::getModel('mymodule/items')->getCollection() 
    ->addFieldToFilter('ts', array('from' => $dateStart, 'to' => $dateEnd)); 
+2

Si vous voulez la fin de la journée, assurez-vous d'utiliser 23:59:59, pas 23:59:00. –

+0

1+ Merci pour l'aide ... –

0

Je pense qu'il devrait être

$dateEnd = date('Y-m-d' . ' 23:59:59', $now); 

au lieu de

$dateEnd = date('Y-m-d' . ' 23:59:00', $now); 
Questions connexes