Cdbcriteria Join - 找不到列

时间:2013-10-03 19:11:58

标签: yii

我有以下SQL

SELECT entry_subject.id, entry_subject.subject_id FROM entry_subject INNER JOIN subject ON entry_subject.subject_id = subject.id WHERE subject.id = 71

我已经得到了以下几个例子的几乎副本,但是我在'字段列表'中 1054未知列'EntrySubject.subject_id'

$subjectEntries = new CDbCriteria();
$subjectEntries->alias = 'EntrySubject';
$subjectEntries->select = 'EntrySubject.id, EntrySubject.subject_id';
$subjectEntries->join = 'INNER JOIN Subject ON Subject.id = EntrySubject.subject_id';
$subjectEntries->condition = 'Subject.id=71';
$subjectEntriesModel=Subject::model()->findAll($subjectEntries);

我的关系如下

return array(
'entrySubject' => array(self::HAS_MANY, 'EntrySubject', 'subject_id'),
'phase' => array(self::BELONGS_TO, 'Phase', 'phase_id'),
'subjectType' => array(self::BELONGS_TO, 'SubjectType', 'subject_type'),
);

我做错了什么? 非常感谢

3 个答案:

答案 0 :(得分:1)

我假设您正在尝试获得主题#71的主题条目,那么您应该尝试以下内容:

$subject = Subject::model()->findByPk(71);
$subjectEntriesModel = $subject->entrySubject;

编辑:你通常应该避免急切加载(如 miog BurhanÇetin答案中所述)HAS_MANY关系

答案 1 :(得分:0)

来自soju上面的回答

  

我假设您正在尝试获得主题#71的主题条目,然后   你应该尝试以下几点:

$subject = Subject::model()->findByPk(71);
$subjectEntriesModel = $subject->entrySubject;

我建议增加一点。

 $subject = Subject::model()->with('entrySubject')->findByPk(71);
 $subjectEntriesModel = $subject->entrySubject;

- > with('entrySubject')已添加

如果可能的话,这将允许yii使用一个查询。

答案 2 :(得分:0)

$query = Subject::model()->with('entrySubject')->findbypk($id);