老子 2012-09-11 10:50:50 4180次浏览 7条回复 0 0 0
public function actionIndex()
{
	$criteria=new CDbCriteria;
	$criteria->addNotInCondition('state', array(0));
	$criteria->limit = 6;
	$dataProvider=new CActiveDataProvider('Goods', array(
			'criteria'=>$criteria,
			'sort'=>array(
				'defaultOrder'=>'sell_count DESC', 				),
	));
	$this->render('index',array(
		'dataProvider'=>$dataProvider,
	));
}

为什么返回的全部数据

  • 回复于 2012-09-11 11:24 举报

    目测没有问题,
    只是‘defaultOrder’似为=>array('sell_count'=>CSort::SORT_DESC)

  • 回复于 2012-09-11 11:37 举报

    是不是全部数据就没有超过6条啊?改成1试试。或者把sql语句打印出来看看如何执行的。

  • 回复于 2012-09-11 11:41 举报

    跟楼上同感,查查数据表,看看总数有几条

  • 回复于 2012-09-11 12:19 举报

    首先谢谢各位!
    数据库中有21条记录

    如果:'pagination'=>array('pageSize'=>12),所有log中打印一条sql

    Querying SQL: SELECT * FROM `tbl_goods` `t` WHERE state!=:ycp0 ORDER BY
    `t`.`sell_count` DESC LIMIT 12. Bound with :ycp0=0
    

    但是没有出现 LIMIT 6.的sql语句

  • 回复于 2012-09-11 13:00 举报

    设置CActiveDataProvider的pagination为null试试。

    $dataProvider=new CActiveDataProvider('Goods', array(
    	'criteria'=>$criteria,
    	'pagination'=>FALSE
    	'sort'=>array(
    		'defaultOrder'=>'sell_count DESC',
    	),
    ));
    
  • 回复于 2012-09-11 14:44 举报

    这句 'pagination'=>FALSE
    还真管用

    谢谢,大师指点

  • 回复于 2012-09-11 17:52 举报

    那如果使用:$criteria->offset = 6;
    并且每页显示12条
    该怎样用

您需要登录后才可以回复。登录 | 立即注册