1)有没有办法在Yii中使用CActiveRecord获取整数列的总和?
否则我将得到列数据并在服务器端总结。
2)我还假设通过一个SQL查询获得总和比获取数据列更快,并在服务器上用PHP总结。如果性能很重要,那么mysql服务器是否应该费心去做这样的操作,或者让php服务器来处理这个问题。
请提出建议。
答案 0 :(得分:10)
1)我不这么认为,除非你想拥有一个STAT关系,否则以这种方式使用CAvtiveRecord并没有多大意义。假设你有一个“问题”模型和一个“答案”模型,答案属于一个问题。您可以建立统计关系并在“问题”中实现它:
Public function relations() {
return array(
'answerSum'=>array(self::STAT, 'Answer', 'questionId', 'select' => 'SUM(answerSum.someFieldFromAnswerTableToSum)')
);
}
然后您检索信息:$ question-> answerSum;其中$ question是一个Question的实例,其关系声明如上。
2)这是数据量的问题。我个人会选择SQL,因为它能够处理更大量的数据集,从而可以保存未来。
答案 1 :(得分:6)
试试吧
$user = User::model()->findBySql('select sum(`you_column`) as `sum` from user', array());
var_dump($user->sum);
在模型中应该存在字段和