我在CakePHP中有一个查询,它有一个名为DropIn.drop_in_time
的存储“datetime”字段。我想只找到DropIn.drop_in_time is > NOW()
的条目,但我很难做到这一点。
条件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')));
答案 0 :(得分: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')
。
答案 1 :(得分:0)
如果您真的想将DB表达式放入CakePHP查找中,可以使用表达式方法:
'DropIn.drop_in_time.' => $db->expression('CURDATE()');
然而,这有点失去了框架提供的数据库抽象的意义,所以按照deceze的建议并将其与date('Y-m-d H:i:s')
进行比较
答案 2 :(得分:0)
使用DboSource :: expression('NOW')而不是仅使用NOW()