Как сравнить и получить дату в Cakephp? - PullRequest
1 голос
/ 20 февраля 2010

Я пытаюсь создать календарь доступности и должен знать, как сравнить даты при его получении.

Моя БД

id
start_date
end_date
status

Теперь предположим, что я хочу получить бронирование в следующем месяце, то есть с 2010-03-01 по 2010-04-01. Как мне получить эти данные? Я пытался сравнивать напрямую, используя условие и, но это не помогло.

Формат в БД - гггг-мм-дд, и я использовал то же самое для сравнения. Но прямое сравнение не работает.

Ответы [ 2 ]

4 голосов
/ 21 февраля 2010

Как выбрать диапазоны дат, которые пересекаются с другим диапазоном, экспертно объяснено здесь: Сравнение диапазонов дат

Таким образом, вы, вероятно, хотите запросить что-то вроде этого:

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

Это найдет все события в следующем месяце. Они могут начинаться раньше или заканчиваться позже, но они будут пересекаться с месяцем.

1 голос
/ 20 февраля 2010

Если ваша таблица называется «События», а ваши даты хранятся в $ start_date и $ end_date, я считаю, что это должно сработать:

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

Он получит все записи, которые начинаются и заканчиваются в пределах вашего диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...