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