我有一种奇怪的行为,我将尝试解释.
我正在构建一个报告系统,其中每个用户都可以让其他用户报告他们的个人资料,图片或消息.
在后端,我想显示一个CGridView,其中每个用户连续出现,并报告总时间.
但是,如果我想通过任何相关字段过滤视图,我必须添加标准,它适用于过滤或搜索,但结果的总显示不正确显示显示1-2的15结果(s )当它应该显示在报告表中显示2个结果中的1-2时我有15行但只有两个用户,还添加了一个不存在的分页.
车型/ Report.PHP
public function relations() { return array( 'reported' => array(self::BELONGS_TO,'User','reported_id'),); } public function search() { $criteria = new CDbCriteria(); $criteria->select = array( '*','count(*) as reports_count',); $criteria->group = 't.reported_id'; $criteria->with = array('reported'); return new CActiveDataProvider($this,array( 'criteria' => $criteria,'sort'=>array( 'attributes'=>array( 'status_search'=>array( 'asc'=>'reported.user_status_id','desc'=>'reported.user_status_id DESC',),'reports_count' => array( 'asc' => 'reports_count ASC','desc' => 'reports_count DESC','*',)); }
更新:我发现解决方案使用join而不是选择我需要的字段而不是用*选择所有字段:
$criteria->select = array( 't.id,t.reported_id',); $criteria->group = 't.reported_id'; $criteria->join = 'LEFT JOIN user u on u.id = t.reported_id';