检查是否在Yii中加载了关系

时间:2014-08-21 11:37:53

标签: php yii

我试图用关系做一些复杂的事情并避免双重加载:

  • 我有一个object个有效记录,每个记录都与subjectobjectSubject关系有关系。

  • 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

之类的东西

1 个答案:

答案 0 :(得分:4)

那你知道什么?有一个功能

hasRelated(string $name)

我完全错过AR docs