Cómo comparar y fecha de ir a buscar en CakePHP?
Pregunta
Estoy tratando de hacer un calendario de disponibilidad y la necesidad de saber cómo puedo comparar fechas en las que ir a buscar a él.
Mi DB es
id
start_date
end_date
status
Ahora supongamos que quiero a buscar a la reserva en el próximo mes, es decir, desde 2010-03-01 a 2010-04-01. ¿Cómo debo ir a buscar estos datos? Yo probé la comparación directa utilizando una y condición, pero no sirvió de nada.
El formato en el DB es aaaa-mm-dd y yo utilizó la misma para comparar. Pero la comparación directa no funciona.
Solución
Cómo buscar a intervalos de fechas que se cruzan con otra gama se explica por expertos aquí: Al comparar los intervalos de fechas
En resumen, es probable que desee consulta para algo como esto:
$start = date('Y-m-d');
$end = date('Y-m-d', strtotime('+1 month'));
$conditions = array('Event.start <=' => $end, 'Event.end >=' => $start);
$this->Event->find('all', array('conditions' => $conditions));
Esto encontrará todos los eventos dentro del próximo mes. Ellos pueden comenzar antes o terminar más tarde, pero van a cruzarse con el mes.
Otros consejos
Asumiendo que su tabla se denomina eventos y las fechas se almacenan en $ y $ fecha_inicial fecha_final, creo que esto debería funcionar:
$results = $this->Event->find('all', array(
'conditions' => array(
'start_date >=' => $start_date,
'end_date <' => $end_date
)
));
Se obtendrá todos los registros que comienzan y terminan dentro de su rango.