2

我的用户模型中有范围:

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

我想在控制器中获取 sumPrice,但我不知道有什么方法可以做到这一点。我试过了:

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

$sumPrice=User::model()->sumPrice()->count(); //它返回用户中的计数记录

$sumPrice=用户::模型()->sumPrice()->findAll(); //它返回用户中的所有记录

但是没有返回sum的函数,那么如何得到呢?

解决了:

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

2 回答 2

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)'
             ),
         );
     }
 }

Yii框架

于 2013-10-12T08:23:23.810 回答
0

你可以使用 ActiveRecord :

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

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

于 2013-10-12T08:28:09.093 回答