【问题标题】:Records listed per page in YiiYii 中每页列出的记录
【发布时间】:2012-01-20 02:12:36
【问题描述】:

我是 Yii 的初学者。我正在使用 views/myModel/index.php 页面列出 MySQL 表中的所有记录。默认情况下,每页显示的记录数为 10。如何更改?

【问题讨论】:

    标签: php frameworks yii


    【解决方案1】:

    首先模型文件夹不应包含 index.php。此文件夹包含与您的数据库表(CActiveRecords)和其他模型相关的所有类。

    为了增加每页的记录数,您可以在 CGridView 或 CListView 中设置分页的页面大小。

    public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('Invoice',
            array(
                'criteria'=>array(
                    'with'=>array('client'),
                    'condition'=>'businessId='. Yii::app()->userInfo->business,
                ),
                'pagination'=>array('pageSize'=>20,),
    
            )
        );
    
    
                $this->render('index',array(
                        'dataProvider'=>$dataProvider,
                ));
        }
    

    【讨论】:

    • 对不起,我的意思是model/index.php中的模型名称
    • 所以如果我只想改变 pageSize 'pagination'=>array('pageSize'=>8) 会做对吗?我试过了,它抛出异常 "CDbCriteria.pagenation" is not defined.
    • 分页是 CActiveDataProvider 类的一个属性。忽略 criterea 属性解决了这个问题。
    • 我相信这个答案有错字。正如所写,它看起来像 paginationcriteria 的属性,而实际上它是 CActiveDataProvider 本身的属性。
    【解决方案2】:

    你也可以在你的代码中做这样的事情:

    $criteria = new CDbCriteria;
    
    $criteria->condition = "...";
    $criteria->params = array();
    $criteria->limit = 20;
    $criteria->offset  = 0;
    $records = YourModel::model()->findAll($criteria);  
    

    limit 是每页显示的记录数,offset 是记录编号的开始位置,您可以将其用作页码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多