2011-02-28 72 views
4

我在CakePHP中有一个查询,它有一个名为DropIn.drop_in_time的存储“datetime”字段。我只想“找到”那些DropIn.drop_in_time is > NOW()的条目,但我很难做到这一点。比较CakePHP中的DateTime

条件DropIn.drop_in_time >' => 'NOW()在下面的查询中没有得到正确的结果。有没有更好的方法来做到这一点?

$requests = $this->DropIn->find('all', array(
      'conditions' => array('DropIn.drop_in_time >' => 'NOW()', 'or' => array(array('DropIn.user_id' => $this->Auth->user('id')), array('DropIn.id' => $drop_in_ids))), 
      'order'=>array('DropIn.created'=>'DESC'))); 

回答

9

如果分隔值'DropIn.drop_in_time' => 'NOW()''NOW()'被认为是指文字字符串值"NOW()"。只需将它写为一个SQL片段即可:'DropIn.drop_in_time > NOW()'。或者,使用'DropIn.drop_in_time >' => date('Y-m-d H:i:s')

+0

太感谢你了!这个建议很好。我知道这是一些愚蠢的语法问题 – 2011-03-01 10:36:31

+0

你也可以做'Model.date>'=>(object)'NOW()'iirc – dogmatic69 2011-03-01 12:12:17

+0

@deceze你是一个老板。 – usumoio 2014-02-28 14:13:00

0

如果你真想把DB表达式为CakePHP的发现,可以使用表达方法:

'DropIn.drop_in_time.' => $db->expression('CURDATE()'); 

然而,这是有点失去数据库抽象的框架提供的点,所以不要为通过deceze建议,并将其与date('Y-m-d H:i:s')

0

使用DboSource而不是现在比较::表达式( 'NOW')的只有()