Frage

Ich versuche, einen Verfügbarkeitskalender und Notwendigkeit zu machen zu wissen, wie kann ich Daten vergleichen, wenn sie abgerufen wird.

Meine DB ist

id
start_date
end_date
status

Jetzt nehme ich an Buchung in nächstem Monat holen will, das heißt von 2010-03-01 bis 2010-04-01. Wie soll ich diese Daten abrufen? Ich versuchte direkt über ein und den Zustand zu vergleichen, aber es hat nicht geholfen.

Das Format der Deutsche Bahn ist yyyy-mm-dd und ich verwenden, um das gleiche zu vergleichen. Aber direkter Vergleich funktioniert nicht.

War es hilfreich?

Lösung

Wie Datum holen Bereiche, die sich schneiden mit einem anderen Bereich fachmännisch hier erklärt: Datumsbereiche Vergleich

Zusammenfassend möchten Sie wahrscheinlich zu Abfrage für so etwas wie folgt aus:

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

Damit werden alle Ereignisse innerhalb des nächsten Monats finden. Sie können früher beginnen oder später enden, aber sie werden mit dem Monat schneiden.

Andere Tipps

Angenommen, Ihre Tabelle Events und Ihre Reisedaten genannt wird, sind in $ start_date und $ end_date gespeichert, ich glaube, das sollte funktionieren:

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

Es werden alle Datensätze erhalten, die in Ihrem Bereich beginnen und enden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top