首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii CSqlDataProvider自定义限制

Yii CSqlDataProvider自定义限制
EN

Stack Overflow用户
提问于 2014-02-05 20:37:10
回答 2查看 1.2K关注 0票数 3

有办法限制CSqlDataProvider吗?例如,当我将totalItemCount强制为3时,没有考虑到结果。

代码语言:javascript
复制
$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行时,我会收到:

代码语言:javascript
复制
CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: ... LIMIT 3 LIMIT 10

看来,无论我做什么,sql后面都有限制10。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-05 20:45:57

在使用CSqlDataProvider时,可以限制sql中的总项。正如Yii的官方文件所写:

与其他数据提供程序一样,CSqlDataProvider也支持排序和分页。它通过使用"ORDER“和"LIMIT”子句修改给定的sql语句来做到这一点。您可以配置排序和分页属性以自定义排序和分页行为。

CSqlDataProvider

因此,您可以通过更改sql轻松地做到这一点,如下所示:

代码语言:javascript
复制
$sql='SELECT * FROM tbl_user LIMIT 3';
票数 2
EN

Stack Overflow用户

发布于 2014-02-06 08:22:28

解决方案是在sql语句的末尾添加;,这样cpagination就不会添加默认的限制10子句。

代码语言:javascript
复制
 $sql = 'SELECT * FROM tbl_user LIMIT 3;';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21587969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档