有办法限制CSqlDataProvider吗?例如,当我将totalItemCount强制为3时,没有考虑到结果。
$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')->queryScalar();
$sql='SELECT * FROM tbl_user';
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>3,
'pagination'=>array(
'pageSize'=>10,
),
));当我试图限制查询限制3和注释totalItemCount行时,我会收到:
CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: ... LIMIT 3 LIMIT 10看来,无论我做什么,sql后面都有限制10。
发布于 2014-02-05 20:45:57
在使用CSqlDataProvider时,可以限制sql中的总项。正如Yii的官方文件所写:
与其他数据提供程序一样,CSqlDataProvider也支持排序和分页。它通过使用"ORDER“和"LIMIT”子句修改给定的sql语句来做到这一点。您可以配置排序和分页属性以自定义排序和分页行为。
CSqlDataProvider
因此,您可以通过更改sql轻松地做到这一点,如下所示:
$sql='SELECT * FROM tbl_user LIMIT 3';发布于 2014-02-06 08:22:28
解决方案是在sql语句的末尾添加;,这样cpagination就不会添加默认的限制10子句。
$sql = 'SELECT * FROM tbl_user LIMIT 3;';https://stackoverflow.com/questions/21587969
复制相似问题