php - Yii CSqlDataProvider 自定义限制

标签 php sql yii

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

关于php - Yii CSqlDataProvider 自定义限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587969/

相关文章:

MySQL Join 查询返回太多结果

mysql - 连接两个表中的特定属性

php - 关系 : MySQL database view and Yii's CActiveRecord

PHP 循环模板引擎 - 从零开始

php - 公司 vs 员工 ID 困境

sql - Postgres 3 月份结果

php - Yii2-完整性约束违规 – yii\db\IntegrityException

php - VK.API : Captcha needed error

php - Cakephp根据请求保存数据

php - 以高效且用户友好的方式呈现加载缓慢的结果