我正在尝试计算在我的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
答案 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
之外。