我有SubjectGroup,它有很多主题。
class SubjectGroup extends AppModel {
public $hasMany = array(
'Subject' => array('order' => 'Subject.name')
);
}
class Subject extends AppModel {
public $belongsTo = array('SubjectGroup');
}
我希望得到所有的SubjectGroups,并递归检索他们的Subjects,但只检查状态为2的Subjects。我无法弄清楚如何做到这一点。
$subjectGroups = $this->SubjectGroup->find('all', array(
'conditions' => array('Subject.status !=' => 2),
'order' => 'SubjectGroup.name'
));
警告(512):SQL错误:1054:'where子句'中的未知列'Subject.status'
注意:我已经读过我可以在模型关系定义中添加条件数组,但我不希望关系始终使用条件。有时我会想要检索状态为2的SubjectGroups和Subjects,有时候检查所有Subjects的SubjectGroups,无论其状态如何。
进步
在Ross的帮助下,我现在正在尝试使用Containable行为。到目前为止我有这个:
$this->SubjectGroup->find('all', array(
'contain' => 'Subject.status != 2',
'order' => 'SubjectGroup.name'
));
没有错误,但它会返回所有主题,甚至是status = 2的主题。
答案 0 :(得分:2)
您正在做的是让Cake在status
表中查找字段SubjectGroup
。它不存在。
您真正想要做的是使用可包含的行为,并以这种方式访问status
字段。
试试这个:
$this->SubjectGroup->Behaviors->attach('Containable');
$subjectGroups = $this->SubjectGroup->find('all', array(
'contain'=>array('Subject'=>array(
'conditions' => array('Subject.status !=' => 2))
),
'order' => 'SubjectGroup.name'
));