Maison > développement back-end > tutoriel php > Explication détaillée de deux méthodes d'implémentation de la pagination dans Yii

Explication détaillée de deux méthodes d'implémentation de la pagination dans Yii

高洛峰
Libérer: 2023-03-04 20:34:01
original
1781 Les gens l'ont consulté

Il existe deux façons d'implémenter la pagination dans Yii, l'une consiste à utiliser DAO et l'autre consiste à l'implémenter dans des widgets

Chacune a ses propres avantages. , et le second est plus efficace. Vous pouvez utiliser la table intégrée, ce qui est plus pratique.

1 DAO implémente la pagination.

[Couche contrôleur. ]

public function actionReport()
  {
    $sql = "select remitdate, sum(rate) sumrate from td_delivery 
      group by remitdate 
      order by remitdate desc";
    $criteria=new CDbCriteria();
    $result = Yii::app()->db->createCommand($sql)->query();
    $pages=new CPagination($result->rowCount);
    $pages->pageSize=2; 
    $pages->applyLimit($criteria); 
    $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit"); 
    $result->bindValue(':offset', $pages->currentPage*$pages->pageSize); 
    $result->bindValue(':limit', $pages->pageSize); 
    $posts=$result->query();
    $this->render('report',array( 
        'posts'=>$posts, 
        'pages'=>$pages, 
    ));
  }
Copier après la connexion

[View Layer]

<?php foreach($posts as $row):?> 
<?php echo CHtml::link($row["remitdate"],array(&#39;delivery/view&#39;,&#39;remitdate&#39;=>$row["sumrate"]));?> 
<?php echo $row["sumrate"]."<br />" ?>
<?php endforeach;?>
<?php 
//分页widget代码: 
$this->widget(&#39;CLinkPager&#39;,array(&#39;pages&#39;=>$pages));
?>
Copier après la connexion

Avantages : l'efficacité du DAO est élevée ; Inconvénients : la couche de visualisation doit écrire certains styles par elle-même, ce qui est un peu gênant

2. Le widget implémente la pagination

[couche de modèle]

/**
   * @var string attribute : 日运费 (统计用)
   * 需要对新增加的字段做个声明
   */
  public $dayrate;
 
 
  /*
   * 统计功能: 统计每日的运费
   */
  public function statistics()
  {
    $criteria = new CDbCriteria;
    $criteria->select = &#39;remitdate, sum(rate) AS dayrate&#39;;
    $criteria->group = &#39;remitdate&#39;;
     
    return new CActiveDataProvider(get_class($this), array(
      &#39;criteria&#39;=>$criteria,
      &#39;sort&#39;=>array(
        // 表头设置点击排序的字段
        &#39;attributes&#39;=>array(
          &#39;remitdate&#39;,
          &#39;dayrate&#39;=>array(
            &#39;asc&#39;=>&#39;dayrate&#39;,
            &#39;desc&#39;=>&#39;dayrate DESC&#39;,
          )
        ),
        &#39;defaultOrder&#39;=>&#39;remitdate desc&#39;,
      ),
    ));  
  }
Copier après la connexion

[Couche de contrôleur]

/**
   * 运单统计功能:
   * 按日期统计
   */
  public function actionReport()
  {
    $model=new Delivery(&#39;statistics&#39;);
    $model->unsetAttributes(); // clear any default values
      
    $this->render(&#39;report&#39;,array(
      &#39;model&#39;=>$model,
    ));
  }
Copier après la connexion

[ Voir la couche]

<?php $this->widget(&#39;zii.widgets.grid.CGridView&#39;, array(
  &#39;id&#39;=>&#39;delivery-grid&#39;,
  &#39;dataProvider&#39;=>$model->statistics(),
  &#39;filter&#39;=>$model,
  &#39;columns&#39;=>array(
    &#39;remitdate&#39;,
    &#39;dayrate&#39;,
    array(
      &#39;class&#39;=>&#39;CButtonColumn&#39;,
    ),
  ),
)); ?>
Copier après la connexion

Avantages : peut être utilisé dans le style intégré ; Inconvénients : efficacité légèrement faible

Ce qui précède est l'intégralité du contenu de cet article. à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour des explications plus détaillées sur les deux méthodes de pagination dans Yii, veuillez faire attention au site Web PHP chinois pour les articles connexes !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal