我有以下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'),
);
我做错了什么? 非常感谢
答案 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);