我有一个任务计划应用程序,并且我尝试根据两个标准获取任务:要么在接下来的两周内有到期日,要么任务本身在2周内结束。这是我的非工作代码:
$conditions['AND'] = array(
'OR'=>array(
'AND'=>array(
'Task.due_date >'=> $now,
'Task.due_date <'=> $twfn
),
'AND'=>array(
'Task.end_time > '=> $now,
'Task.end_time <' => $twfn
)
)
);
还有其他条件,因此外部$conditions['AND']
SQL日志显示:
WHERE ((((`Task`.`end_time` > '2015-06-30') AND (`Task`.`end_time` < '2015-07-14')))
这意味着OR
未被评估。如果相关,则每项任务都有end_time
,但不一定是due_date
。
非常感谢任何正确方向的帮助或指示!
答案 0 :(得分:3)
使用这个:AND
s应该在数组中,因为你为数组提供相同的键(AND),最后一个将被使用
$conditions['AND'] = array(
'OR'=>array(
array(
'AND'=> array(
array(
'Task.due_date >'=> $now,
),
array(
'Task.due_date <'=> $twfn
)
),
),
array(
'AND'=>array(
array(
'Task.end_time > '=> $now,
),
array(
'Task.end_time <' => $twfn
)
)
)
)
);
来自docs的更多示例 http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions