我有一个子任务和一个马模型。
马有很多子任务。
子任务有一个与之关联的日期。它是一个MYSQL日期对象,而不是日期时间。
在我的View / Horse / view.ctp中,我想只打印出给定日期范围之间的子任务,而我很难做到这一点。我可以使用常规过滤在我的控制器方法中传递子任务:
$this->set('incomplete_subtasks', $this->Subtask->find('all', array('conditions' => array(
'and' => array(
'completed ' => 0,
'Subtask.horse_id ' => $id)))));
我正在尝试使用此功能过滤日期范围:
$this->set('incomplete_subtasks', $this->Subtask->find('all', array('conditions' => array(
'and' => array(
'completed ' => 0,
'Subtask.horse_id ' => $id,
'Subtask.date BETWEEN ? AND ?' => array(
date(Y-m-d),
date(Y-m-d, strtotime('+1 week'))
)
)
)
)));
我在马/视图中收到此错误:
Notice (8): Use of undefined constant Y - assumed 'Y' [APP/Controller/HorsesController.php, line 56]
我在表达式中使用的每个常量都得到了这个错误 - 总共有六个。
答案 0 :(得分:1)
我不确定你的意思"常数"因为我无法在代码中看到任何常量,所以我猜测它是因为你没有用引号括起Y-m-d
(所以PHP假设它们是常量)。 / p>
首先,尝试用引号将它们包装起来:
'Subtask.date BETWEEN ? AND ?' => array(
date('Y-m-d'),
date('Y-m-d', strtotime('+1 week'))
)
如果不这样做,您应该为您的日期执行简单的<=
和>=
,并且此处不需要您的条件的and
密钥(除非还有其他您在代码中省略的数组键。
试试这个:
$this->set('incomplete_subtasks', $this->Subtask->find('all', array('conditions' =>
array(
'completed ' => 0,
'Subtask.horse_id ' => $id,
'Subtask.date >=' => date('Y-m-d'),
'Subtask.date <=' => date('Y-m-d', strtotime('+1 week'))
)
)));