cakephp包含按父模型值过滤

cakephp包含按父模型值过滤,cakephp,Cakephp,我有这些关系: 考勤属于员工 日程安排属于员工 这个find()可以很好地获取日期范围内的所有考勤记录 $data = $this->Attendance->find('all', array( 'contain' => array( 'Employee' => array( 'Schedule' => array( 'conditions' =&

我有这些关系:

考勤属于员工

日程安排属于员工

这个find()可以很好地获取日期范围内的所有考勤记录

    $data = $this->Attendance->find('all', array(
        'contain' => array(
            'Employee' => array(
                'Schedule' => array(
                    'conditions' => array('sche_status' => 1),
                    'order' => 'sche_valid DESC',
                    'limit' => 1
            ))
        ),
        'conditions' => $conditions,
        'order' => array('employee_id', 'att_date')
            )
    );
然而,这一进度条件

'conditions' => array('sche_status' => 1),
获取“当前”计划。问题是当员工在日期范围内有多个计划时。 为了获得家长出勤记录的相关时间表,我还需要 出席条件。截止日期

尝试

'conditions'=>array('sche_status'=>1,'ho_valid当您使用
contain()
时,它会执行单独的查询。在您的示例中,它实际上会单独执行三个查询,然后由CakePHP组合到返回的数据数组中

因此,您不能使用不同模型中的字段对包含的模型进行条件设置

最好的选择是先查询字段,然后在此查找中使用它的值,或者使用,这将使所有结果从单个查询返回,而不是从三个单独的查询返回


旁注-看起来您正在控制器中构建此查询-遵循MVC结构,最佳做法是将所有查询保留在模型中,而不是控制器中-然后只调用模型的方法(其中包含
find()
)从控制器检索结果。

谢谢@Dave;还没有使用蛋糕连接;在这种情况下,将重新评估我的需求。祝您好运。
'conditions' => array('sche_status' => 1, 'ho_valid <=' => Attendance.att_date)
'conditions' => array('sche_status' => 1, 'ho_valid <=' => $this->Attendance.att_date)