我正在尝试用关系做一些复杂的事情并避免双重加载:
我有一个
object
事件记录,每个记录都通过objectSubject
关系与一些subject
相关。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
添加一个函数,通过 type
获取 object
的 subject
。 .
我能做到:
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
及其 type
和 subject
被急切地加载到对象
。
我想在它们是的情况下替换逻辑,如果它们不是,则只查询一个 subject
行。有什么方法可以检查是否已加载关系?
像$this->isLoaded('objectSubjects')
这样的东西?
最佳答案
关于php - 检查 Yii 中是否加载了关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25425383/