2010-02-20 3 views
1

J'essaye de faire un calendrier de disponibilité et ai besoin de savoir comment je peux comparer des dates en le récupérant.Comment comparer et récupérer la date dans Cakephp?

Mon DB est

id 
start_date 
end_date 
status 

Supposons maintenant que je veux aller chercher réservation en suivant le mois, à savoir de 2010-03-01 à 2010-04-01. Comment devrais-je récupérer ces données? J'ai essayé de comparer directement en utilisant une condition et mais cela n'a pas aidé.

Le format dans le DB est aaaa-mm-jj et j'ai utilisé le même pour comparer. Mais la comparaison directe ne fonctionne pas.

Répondre

3

Comment récupérer des plages de dates qui se croisent avec une autre gamme est ici habilement expliqué: Comparing date ranges

En résumé, vous voulez probablement interroger quelque chose comme ceci:

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

Ce trouvera tous les événements dans le mois prochain. Ils peuvent commencer plus tôt ou se terminer plus tard, mais ils vont se croiser avec le mois.

1

En supposant que votre table est nommée événements et dates sont stockées dans START_DATE $ et date_fin $, je crois que cela devrait fonctionner:

$results = $this->Event->find('all', array(
    'conditions' => array(
     'start_date >=' => $start_date, 
     'end_date <' => $end_date 
    ) 
)); 

Il obtiendra tous les enregistrements qui commencent et se terminent dans votre gamme.

+0

J'essaie la même chose .. mais semble ne pas fonctionner .. \t \t $ books = $ this-> Property-> Booking-> find ('all', array ('conditions' => array ("Réservation .property_id "=> $ P_id," Booking.start_date> = "=> $ cur_start_date," Booking.end_date <"=> $ cur_end_date))); –

+0

est la requête sql-query correcte (app/config/core.php - debug = 2)? Êtes-vous capable d'interroger les données «à la main»? – harpax

Questions connexes