我试图用关系做一些复杂的事情并避免双重加载:
我有一个object
个有效记录,每个记录都与subject
个objectSubject
关系有关系。
subject
的类型(与object
相关)在objectSubject
中定义了另一种关系。
每个object
每种类型的关系为零或一subject
我将Object
模型中的关系设置为:
'objectSubjects'=>array(self::HAS_MANY, 'ObjectSubject', 'object_id'),
ObjectSubject
模型为:
'type'=>array(self::BELONGS_TO, 'Type', 'type_id'),
'subject'=>array(self::BELONGS_TO, 'Subject', 'subject_id'),
我想添加一个函数Object
获取subject
的{{1}} object
..
我能做到:
type
但这会导致数据库查询,即使public function fetchSubject($key_string){
$object_subject=$this->objectSubjects(array(
'with'=>'subject'
'scopes'=>array('typed'=>$key_string) /* Inner Join to type */
));
return $object_subjects?$object_subjects[0]->subject:null;
}
和object_subject
的{{1}}被急切加载到type
。
我想在它们是的情况下替换逻辑,并且如果它们不是那么只查询一个subject
行..有没有办法检查是否已经加载了一个关系?
像object
?