微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-Yii CSqlDataProvider自定义限制

有没有办法限制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.

解决方法:

使用CSqlDataProvider时,可以限制sql中的项目总数.
正如Yii的正式文件所述:

Like other data providers, CSqlDataProvider also supports sorting and pagination. It does so by modifying the given sql statement with “ORDER BY” and “LIMIT” clauses. You may configure the sort and pagination properties to customize sorting and pagination behaviors.

CSqlDataProvider

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

$sql='SELECT * FROM tbl_user LIMIT 3';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐