我正在尝试用关系做一些复杂的事情并避免双重加载:
我有一个object活动记录,每个记录都通过关系与某些subjects 有objectSubject关系。
subject(相对于object)的类型在objectSubject与另一个关系中定义。
每个都object具有subject每种类型的零个或一个关系
我在Object模型中设置的关系为:
'objectSubjects'=>array(self::HAS_MANY, 'ObjectSubject', 'object_id'),
Run Code Online (Sandbox Code Playgroud)
而ObjectSubject型号为:
'type'=>array(self::BELONGS_TO, 'Type', 'type_id'),
'subject'=>array(self::BELONGS_TO, 'Subject', 'subject_id'),
Run Code Online (Sandbox Code Playgroud)
我想补充一个函数来Object得到subject的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;
}
Run Code Online (Sandbox Code Playgroud)
但这将导致数据库查询,即使object_subjects 及其types 和subjects 急切地加载到object.
我想在它们是的情况下替换逻辑,如果它们不是,则只查询subject一行..有没有办法检查是否已加载关系?
像$this->isLoaded('objectSubjects')什么?
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |