Yii中优化ActiveRecord的relation model取值

posted by admin on 2011-12-21 | Comments (1) | Last updated on 2011-12-21

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可以!

文章评分

发表评论

您的IP: 38.107.179.237 美国 局域网/未知

1个评论

  1. 西安无痛人流
    @ 2011/12/24 11:53:13

    有些深奥,看的不是很懂