2012-01-19 4 views
3

Я пытаюсь получить купоны, которые еще не истекли. У меня это у меня в контроллере:CakePHP найти по дате?

public function coupons() { 
    $this->paginate['Coupon']=array(
     'limit'=>9, 
     'order'=>'RAND()', 
     'conditions'=>array(
     'Coupon.end_date'=>??????) 
    ); 
    $c=$this->paginate('Coupon'); 
    $this->set('allcoupons', $c); 
} 

Мне нужно, чтобы все записи не истекли на сегодняшний день. end_date находится в формате DATE. Я не знаю, как спросить торт посмотреть на end_date и сравнить его с сегодняшним днем, и делать это внутри метода paginate.

ответ

8

Вам просто нужно отформатировать дату правильно

'Coupon.end_date >' => date('Y-m-d H:i:s') 
+0

Так чем больше, чем знак идет внутри одиночных кавычек? – huzzah

+0

Да, для любой операции сравнения в запросе CakePHP оператор переходит в ключ. :) – NathanGaskin

+0

Спасибо, он отлично работает! – huzzah

0

Вы, вероятно, нужно использовать в time helper функцию dayAsSql в контроллере, так что у вас есть что-то вроде

public function coupons() { 
    $expire_interval = "3 days"; 
    $this->paginate['Coupon'] = array(
     ... 
     'conditions' => 
      ## called via TimeHelper 
      $this->Time->dayAsSql($this->Time->fromString($expire_interval), 'end_date') 
     ) 
    ); 
    .... 
} 
+0

Материал TimeHelper был перемещен в класс Lib в Utility для более чистого доступа к MVC внутри моделей и т. Д. Таким образом, ваш ответ не совсем корректен. – mark

+0

Это верно (и его использование также отображается при вызове CakeTime из модели, из предоставленной ссылки), но я основывал свой ответ на этом вопросе на вопросе. «... истек еще. У меня это в моем контроллере:« Я не пытался умалить кого-то в Интернете, а моя цель состояла в том, чтобы помочь им решить их проблему и предоставить что-то полезное для других, которые могут наткнуться на этот вопрос. – matt

+0

Ошибка была решена год назад (если вы посмотрите на отметки времени). Вы просто добавили неверную информацию в устаревший вопрос здесь. Вы могли бы хотя бы использовать подходящий класс (CakeTime) здесь. PS: Вам также нужно будет включить его правильно - используя App :: uses(). – mark

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

  • Нет связанных вопросов^_^