yii中判断一个关联对象是否存在

例如一个ActiveRecord对象User,它的关联对象有Contact。(这里假设你的配置的relaction名为contact)。 php

在查询的时候时候,若是带有with('contact')进行查询,则返回的user对象,能够直接user->contact取对象。但若是你没有带with('contact'),则,使用user->contact会报错。 spa

若是你在使用user对象时,不肯定以前的查询是否使用了with(好比你在写一个通用的跟user有关的方法的时候),须要使用到contact对象时,为了不报错,则能够加上一个判断 code

if($user->hasRelate('contact')){
....//这里是要读取contact信息相关的代码
}
注意:这里不能用if(!empty(user->contact))这样的判断,由于 user->contact这句话已经试图去执行关联查询了,即它已经认为你已经带了with关联信息了。