在模型范围()函数中计数

时间:2014-12-16 06:00:59

标签: php yii

我正在尝试计算在我的scopes中找到的总匹配数,范围有效并且每隔一列返回一次,COUNT()

除外
   public function scopes()
        {
            return array(
                'test'=> array(
                        'alias' => 'd',
                        'select'=> array('d.id, d.picture, d.store, d.address, d.postcode, d.city, d.state, COUNT(*) AS totalAds'),
                        'join' => 'JOIN `ads` AS v',
                        'condition'=>'d.is_new="0" AND v.pending!="1" AND d.id = v.id',
                        'group'=>'v.id'
                ),
       }

在我看来我正在尝试使用$data->totalAds获取数据,但是当我使用此print_r($data->totalAds)

时出现此错误

我得到的错误是 Property "Store.totalAds" is not defined.

我正在使用Yii 1.1.15

1 个答案:

答案 0 :(得分:0)

如您的错误所述,totalAds未定义。

您可以在班级中将totalAds定义为statistical relation,例如

`totalAds` => array(self::STAT, 'Ad', array('id' => 'id'), 'condition' => ... , 'group' => ...)

然后,您可以将范围定义为:

'test' => array(
    'with' => array('totalAds'),
    'together' => true,
);

或者,您可以在$totalAds课程中创建一个公共变量Store,然后从您的查询中为其分配值totalAds。但是,如果没有附加代码,此变量将不会自动设置在scope之外。