1

私は次の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

いくつかの例のほぼカーボン コピーである以下に到達しましたが、「field list」で 1054 Unknown column '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'),
);

私は何を間違っていますか?どうもありがとう

4

3 に答える 3

1

サブジェクト #71 のサブジェクト エントリを取得しようとしていると仮定すると、次のことを試してみてください。

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

編集:通常、リレーションの熱心な読み込み(miogおよびBurhan Çetinの回答で説明されているように)を避ける必要ありますHAS_MANY

于 2013-10-04T07:53:58.947 に答える
0

上記のソジュの答えから

サブジェクト #71 のサブジェクト エントリを取得しようとしていると仮定すると、次のことを試してみてください。

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

これに追加することをお勧めします。

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

->with('entrySubject')が追加されました

これにより、可能であれば yii が代わりに 1 つのクエリを使用できるようになります。

于 2013-10-04T08:13:35.497 に答える