试图弄清楚如何从数据库中查找在特定日期创建的所有记录,但我很难提出必要的条件。这是我到目前为止所拥有的:
$date = new DateTime('2012-11-25');
$users = $this->User->find('all', array('conditions' => array('User.created > ' => $date)));
但这给我的不仅仅是指定的日子。如何调整条件以返回仅在 11 月 25 日创建的所有用户?
玩了一圈之后,我终于能够让它工作了。希望这可以帮助遇到相同情况的其他人:
$date = new DateTime('2012-11-25');
$users = $this->User->find('all', array('conditions' => CakeTime::dayAsSql($date, $date, 'User.created')));
关键是确保提供 $date 两次。
您的代码中有一个大于符号。
$users = $this->User->find('all', array('conditions' => array('User.created > ' => $date)));
尝试不:
$users = $this->User->find('all', array('conditions' => array('User.created' => $date)));
您应该为此使用 CakeTime 方法或手动断言您只检查这一特定日期的日期部分。
http://book.cakephp.org/2.0/en/core-utility-libraries/time.html#CakeTime::dayAsSql
'conditions' => CakeTime::dayAsSql($date, 'created')