Cakephp 查找 'OR' 和 'AND' 复杂连接条件的语法

Cakephp find syntax for 'OR' and 'AND' complex join conditions

我有一个任务计划应用程序,我正在尝试根据两个条件获取任务:它们的截止日期在接下来的 2 周内,或者任务本身将在 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

任何正确方向的帮助或指示将不胜感激!

使用这个:ANDs 应该在数组中,因为你为数组提供了相同的键(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
                )
            )
        )
    )
);

来自文档的更多示例 http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions