2011-02-28 52 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')的只有()