CakePHP-查找相关模型的条件
我有一个主题组,它有很多主题CakePHP-查找相关模型的条件,cakephp,Cakephp,我有一个主题组,它有很多主题 class SubjectGroup extends AppModel { public $hasMany = array( 'Subject' => array('order' => 'Subject.name') ); } class Subject extends AppModel { public $belongsTo = array('SubjectGroup'); } 我想获取所有Subje
class SubjectGroup extends AppModel {
public $hasMany = array(
'Subject' => array('order' => 'Subject.name')
);
}
class Subject extends AppModel {
public $belongsTo = array('SubjectGroup');
}
我想获取所有SubjectGroup,并递归检索它们的主题,但只检索状态为2的主题。我不知道该怎么做
$subjectGroups = $this->SubjectGroup->find('all', array(
'conditions' => array('Subject.status !=' => 2),
'order' => 'SubjectGroup.name'
));
警告(512):SQL错误:1054:where子句中的未知列“Subject.status”
注意:我已经读到可以将条件数组添加到模型关系定义中,但我不希望关系总是使用条件。有时我只想检索状态为2的主题组和主题,有时检索状态为2的所有主题的主题组,而不管它们的状态如何
进步
在Ross的帮助下,我现在尝试使用可控制行为。到目前为止,我有:
$this->SubjectGroup->find('all', array(
'contain' => 'Subject.status != 2',
'order' => 'SubjectGroup.name'
));
没有错误,但它返回所有主题,即使是状态为2的主题。您要做的是让Cake在
SubjectGroup
表中查找状态
字段。它不存在
您真正想要做的是使用containable行为,并以这种方式访问状态
字段
试试这个:
$this->SubjectGroup->Behaviors->attach('Containable');
$subjectGroups = $this->SubjectGroup->find('all', array(
'contain'=>array('Subject'=>array(
'conditions' => array('Subject.status !=' => 2))
),
'order' => 'SubjectGroup.name'
));
是的,Containable看起来像我需要的,但是你的代码不起作用。根据该手册,它有一个示例
$this->Post->find('all',array('contain'=>'Comment.author=“Daniel”)代码>所以我尝试将其修改为$this->SubjectGroup->find('all',array('contain'=>'Subject.status!=2','order'=>'SubjectGroup.name')代码>但这不起作用。你能发布你的关联吗?还有什么不起作用?错误,意外数据?请参阅我更新的主要帖子。没有错误,它只返回所有主题,因此可包含的行为似乎没有任何作用。不应接受此答案,因为它返回所有主题组,但每个主题组仅包含状态为的主题!=是的!我同意Vanja D.同样的问题。你解决你的问题了吗?可能是重复的