我在添加STAT时收到错误。我试图计算每个用户的响应数量,并从描述顺序对其进行排序。 我的错误:CActiveDataProvider及其行为没有名为" getValidators"的方法或闭包。
关系:
'stickerCount'=>array(self::STAT, 'UserSticker', 'user_id'),
控制器:
$likes=new CActiveDataProvider('UserSticker');
$this->render('index',array(
'likes'=>$likes,
'sort'=>array(
'defaultOrder'=>'stickerCount DESC',
),
));
<?php
$this->widget ( 'bootstrap.widgets.TbGridView', array (
'id'=>'follower',
'type'=>'striped condensed',
'dataProvider'=>$likes,
'filter'=>$likes,
'columns'=> array(
'stickerCount',
)));
?>
答案 0 :(得分:0)
试试这个:
$criteria = new CDbCriteria();
$criteria->join = 'JOIN (SELECT user_id, count(*) As stickerCounter '
. 'FROM user_sticker GROUP BY user_id) userSticker '
. 'ON userSticker.user_id = t.id';
$likes = new CActiveDataProvider('MainTable',array(
'criteria'=>$criteria,
));
...