Yii中优化ActiveRecord的relation model取值
ActiveRecord的relations定义相关的类,可以很方便的取到相应的值。
比如:
class User extends CActiveRecord
{
public function relations()
{
return array(
'group' => array(self::BELONGS_TO, 'Group', 'group_id'),
);
}
}
可以很通过$user->group获取Group的实例化类,但是问题随之而来,如果group这个表很大,对应的字段很多,CActiveRecord在取值的时候会把这些值都取出来,可是往往我们需要的仅仅是其中的一两个字段而已,这就需要在with的时候设置select信息。
如果这样设置:
$criteria = new CDbCriteria();
$criteria->distinct = true;
$criteria->select = " t.* ";
$criteria->condition = " 1=1 ";
$criteria->with = array('teacher'=>
array('select'=>'username,company_id',
'order'=>'teacher.username ASC')
);
这样才能减少载入的字段。
试想,如果通过方法实例化本类的时候通过defaultScope()方法获取字段,with相关类的时候只取我们需要的字段就好多了,Yii可以!

@ 2011/12/24 11:53:13
有些深奥,看的不是很懂