2016-06-23 4 views
1

Я пытаюсь выполнить запрос в своем контроллере, я хочу найти всю сущность, где начальная и настоящая дата находятся между NOW(), , если $ start и $ end находятся между NOW(), поэтому показать все юридическое лицо, но я так и не удалосьCakePHP 3 Между двумя датами

Моя находка:

$day = date('l'); 
$now = Time::now(); 
$tvs = $this->Tvs 
     ->find('all') 
     ->contain(['Users']) 
     ->where(['Tvs.day' => $day]) 
     ->andWhere(function($exp) { 
       return $exp->between($now, 'Tvs.start', 'tvs.end', $now); 
          }); 

Как сделать этот запрос? Спасибо за помощь!

+0

вы имеете в виду: '$ now' находится между 'start' и' end', я думаю. – arilia

ответ

3

Предполагая, что вы пытаетесь найти все twhe записи, имеющую $now между start и end запросом является

шестерки руководство говорит, что первый аргумент межгрупповых fucntion должен быть именем поля (так что он не может быть дата), а между вы можете использовать два сравнения

$tvs = $this->Tvs 
    ->find('all') 
    ->contain(['Users']) 
    ->where(['Tvs.day' => $day]) 
    ->andWhere(function($exp) use($now) { 
     $exp->lte('Tvs.start', $now); 
     $exp->gte('Tvs.end', $now); 
     return $exp; 
    }); 

в любом случае вы можете использовать MySQL NOW() функцию непосредственно в запросе, если $ Теперь переменная содержит то же значение ТЕПЕРЬ функции()

->andWhere(function($exp, $q) { 
    return $exp->between($q->func()->now(), 'Tvs.start', 'Tvs.end'); 
}); 

есть соседний метод: вы можете использовать BETWEEN и palceholder связать значение $ Теперь

->andWhere([':now BETWEEN Tvs.start AND Tvs.end']) 
->bind(':now', $now, 'datetime'); 

или с помощью CakePHP SQL функции

->where(function($exp, $q) { 
    return $exp->between(':now', 'Tvs.start', 'Tvs.end'); 
}) 
->bind(':now', $now, 'datetime'); 
+0

Да, эта функция верна, но теперь мой $ Time :: now(); и я имею ошибку SQL -> использовать около '09: 34, я думаю, что между не принимать формат даты Y-m-d H: i: s – user3115306

+0

Я просмотрел документацию between(). См. Мое редактирование – arilia

+0

Спасибо за вашу помощь, я прочитал документацию и понимаю конструктор запросов, это работа! – user3115306

Смежные вопросы