【问题标题】:Yii framework: get sum by scopeYii 框架:按范围获取总和
【发布时间】:2013-10-20 08:30:42
【问题描述】:

我的用户模型中有作用域:

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

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

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

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

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

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

已解决:

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

【问题讨论】:

  • 你找到你要找的东西了吗?

标签: php yii frameworks get sum


【解决方案1】:

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

 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

【讨论】:

    【解决方案2】:

    你可以使用 ActiveRecord :

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

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

    【讨论】:

    • 我尝试了第一个示例,但没有返回总和。我收到错误:未定义属性“User.sum”。
    • 你能从 $sumPrice 中进行 var_dump 吗?
    • 对不起,我已经编辑了我的答案。再试一次 $sumPrice->sum
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多