gpt4 book ai didi

php - 在 CakePHP Controller 中过滤日期范围

转载 作者:行者123 更新时间:2023-11-29 00:17:39 25 4
gpt4 key购买 nike

我有一个子任务和一个马模型。

马有很多子任务。

子任务有一个与之关联的日期。它是一个 MYSQL 日期对象,而不是日期时间。

在我的 View/Horse/view.ctp 中,我只想打印出给定日期范围内的子任务,但我很难做到这一点。我可以在我的 Controller 方法中使用常规过滤传递子任务:

    $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'))

)
)
)
)));

我在 horse/view 中得到这个错误:

注意 (8):使用未定义常量 Y - 假定为“Y”[APP/Controller/HorsesController.php,第 56 行]

我在表达式中使用的每个常量都会出现该错误 - 总共有六个。

最佳答案

我不确定你所说的“常量”是什么意思,因为我在你的代码中看不到任何常量,我猜这是因为你没有包装 Y-m-d在引号中(因此 PHP 假定它们是常量)。

首先,尝试将它们用引号引起来:

'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'))
)
)));

关于php - 在 CakePHP Controller 中过滤日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com