Было бы место для некоторых улучшений (хотя, как вы говорите, текущий код должен работать, так что это лишь некоторые из моих мыслей).
Прежде всего, если вы собираетесь проверять тольконапример, 00:00:00
и 23:59:59
, отбросьте время полностью и просто используйте поле DATE
вместо поля DATETIME
.Это делает проверку намного проще, так как вам не нужно беспокоиться о времени.(Если времена важны для других частей вашего приложения, то приведенный ниже пример кода должен быть соответствующим образом скорректирован.)
Кроме того, я бы использовал функции DateTime PHP, а не date()
с strtotime()
, главным образом потому, что это моя привычка, когда я работаю с данными даты / времени.Это потому, что DateTime добавляет много возможностей и гибкости для ваших данных даты и времени без особых хлопот.Что-то вроде этого - то, на что я, вероятно, пошла бы:
public function planner() {
// Set the DateTime object (defaults to current date/time)
$today = new DateTime();
// Overdue actions (everything older than today)
$overdue = $this->Agent->ActionItem->find('all', array(
'conditions' => array(
// Check due against a 'Y-m-d' formatted date of today.
'ActionItem.due <' => $today->format('Y-m-d'),
'ActionItem.agent_id' => '1'
)
));
// Actions due today (or in the future)
$due = $this->Agent->ActionItem->find('all', array(
'conditions' => array(
// Check due against a 'Y-m-d' formatted date of today.
'ActionItem.due >=' => $today->format('Y-m-d'),
'ActionItem.agent_id' => '1'
)
));
// Set the items
$this->set(compact('overdue', 'due'));
}