Yii框架:按范围求和

时间:2013-10-12 08:12:02

标签: php yii frameworks get sum

我的用户模型中有范围:

public function scopes()
{
    return array(
        'sumPrice'=>array(
             'select'=>'SUM(`price`)',
         ),
    );
}

我想在控制器中获得sumPrice,但我不知道这是怎么做的。我试过了:

  

$ sumPrice =用户::模型() - > sumPrice(); //它返回空记录(用NULL填充的用户模型)

     

$ sumPrice =用户::模型() - > sumPrice() - >计数(); //它返回用户的计数记录

     

$ sumPrice =用户::模型() - > sumPrice() - >的findAll(); //它返回用户

中的所有记录

但是没有返回总和的功能,那么如何获得呢?

解决:

$sumPrice = Yii::app()->db->createCommand('SELECT SUM(`price`) AS `sum` FROM `user`')->queryAll();
var_dump($sumPrice[0]['sum']);

2 个答案:

答案 0 :(得分:3)

您需要在活动记录上进行统计查询,在模型上定义关系

 class Post extends CActiveRecord
 {
     public function relations()
     {
         return array(
             'commentCount'=>array(self::STAT, 'Comment', 'post_id'),
             'categoryCount'=>array(
                 self::STAT, 'Category', 'post_category(post_id, category_id)'
             ),
         );
     }
 }

Yiiframework

答案 1 :(得分:0)

您可以使用ActiveRecord:

$criteria = new CDbCriteria;
$criteria->select='SUM(your_column) as sum';
$criteria->condition='your_condition';
$user = User::model()->find($criteria);

您需要在模型类中声明:public $sum;。 (使用上面的例子。)