2014-05-21 1 views
1

Ceci est mon SQL:Comment est-ce que j'exécuterais ce SQL de manière Magento en utilisant des collections?

select created_at from sales_flat_order where created_at > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 3 HOUR); 

Cela me renvoyer les commandes des 3 dernières heures. Maintenant, comment pourrais-je exécuter cette requête en utilisant la collection Magento?

C'est ce que j'ai jusqu'à présent:

$orderCollection = Mage::getModel('sales/order')->getCollection(); 

Maintenant je dois ajouter un peu de filtre, mais je suis coincé là-bas. Merci pour ton aide!

Répondre

3

Jetez un coup d'oeil @Using Collections in Magento

$orderCollection = Mage::getModel('sales/order')->getCollection(); 
$orderCollection->addAttributeToFilter('created_at', array(
    'gt' => new Zend_Db_Expr('SUBDATE(CURRENT_TIMESTAMP, INTERVAL 3 HOUR)')) 

ou

$orderCollection = Mage::getModel('sales/order')->getCollection(); 
$orderCollection->getSelect()->where('created_at > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 3 HOUR)'); 
+0

j'avais presque le même code, à l'exception de la « nouvelle Zend_Db_Expr ". Merci! – user1856596

+0

@ R.S juste 1 min plus lent que vous :-) –

2
$time = time(); 
$to = date('Y-m-d H:i:s', $time); 
$lastTime = $time - 10800; // 3hr(60min/hr)(60sec/min) 
$from = date('Y-m-d H:i:s', $lastTime); 
$order =Mage::getModel('sales/order')->getCollection(); 
    ->addAttributeToSelect('*') 
    ->addAttributeToSelect('created_at') 
    ->addAttributeToFilter('created_at', array('from' => $from, 'to' => $to)) 
    ->load(); 

Permettez-moi de savoir si vous avez des questions

Questions connexes