有没有办法限制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,
),
));
当我尝试限制查询LIMIT 3并注释totalItemCount行时,我收到:
CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: ... LIMIT 3 LIMIT 10
似乎无论我做什么,sql都附加了LIMIT 10。
答案 0 :(得分:2)
在使用CSqlDataProvider时,您可以限制sql中的总项目数。 正如Yii的官方文件所写:
与其他数据提供程序一样,CSqlDataProvider也支持排序和分页。它通过使用“ORDER BY”和“LIMIT”子句修改给定的sql语句来实现。您可以配置sort和pagination属性以自定义排序和分页行为。
所以你可以通过改变你的sql来轻松完成:
$sql='SELECT * FROM tbl_user LIMIT 3';
答案 1 :(得分:1)
解决方案是在sql语句的末尾添加; ,这样cpagination就不会添加默认的LIMIT 10子句。
$sql = 'SELECT * FROM tbl_user LIMIT 3;';