2012-04-16 11 views
5

cómo conseguir todos los productos entre dos fechas como productos últimos mes, este mes productos, productos de la semana pasada y esta semana productos etc.cómo obtener todos los productos entre dos fechas?

he intentado con esto:

// current day to start with 
$start = mktime(0,0,0,date('m'), date('d'), date('Y'));; 

// calculate the first day of last month 
$first = date('YYYY-MM-DD',mktime(0,0,0,date('m',$start) - 1,1,date('Y',$start))); 

// calculate the last day of last month 
$last = date('YYYY-MM-DD',mktime(0, 0, 0, date('m') -1 + 1, 0, date('Y',$start))); 



    if($filter == "lastmonth"){ 

    $collection = Mage::getModel('catalog/product')->getCollection(); 
    $collection->addAttributeToFilter('updated_at', array('gteq' =>$first)); 
    $collection->addAttributeToFilter('updated_at', array('lteq' => $last)); 


} 

pero no soy capaz de obtener el resultado :(cualquier ayuda

modificado después de la respuesta de Daniel

Respuesta

10

Probé su código y tuvo que cambiar 'lteq' y 'gteq' para hacer que funcione. El $fromdate es el número más bajo por lo que está buscando las fechas mayor que ese número.

También debe recordar dar formato a las fechas, ya que a MySQL le gusta; date('Y-m-d').

PS. Consulte comparison operators para obtener una lista completa

+0

paquete de gracias Daniel :) – atif

1

Hay un problema con el código:?!

$collection->addFieldToFilter() 

debería ser:

$collection->addAttributeToFilter() 
15

1) Antes que nada, debe cambiar el formato de la fecha de 'AAAA-MM-DD' a 'Y-m-d'. Esto devolverá un formato de fecha que tienen los registros de magento.

2) Hay una condición especial para la fecha como la siguiente mención con su ejemplo.

$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->addAttributeToFilter('updated_at', array('gteq' =>$first)); 
$collection->addAttributeToFilter('updated_at', array('lteq' => $last)); 

To.

$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->addAttributeToFilter('updated_at', array(
     'from' => $first, 
     'to' => $last, 
     'date' => true, 
     )); 
1

sé que la pregunta es poco viejo, pero ya que está bastante bien clasificado en los motores de búsqueda, que corregirá la función fecha() que una mejor toma como argumentos algo como: Ymd H: i: s. ¡Espero que ayude!

Cuestiones relacionadas