Zend_Paginator多条件查询

时间:2022-05-23 11:10:10

上一篇中,作者介绍了zend_paginator,利用range(1,$lenght)初始化Zend_Paginator_Adapter_Array(),用这个zend_paginator构造一个导航条。

本篇介绍条件查询分页:

(1)首先要查询到该条件下的总条数。

(2)然后再获取当前页的数据。

 

$db = $this->getAdapter();
$select = $db->select();
$select->from('draft','count(*)');
//$array查询条件
foreach(@$array as $key=>$value) { if($key=='keyword') { $condition = '%'.$value.'%'; $select->where("content like ?",$condition); } else { $select->where($key."=?",$value); } } $this->total = $db->fetchOne($select); if($this->total==0) { return null; } //不计算分页,首先计算该条件下总数 $paginator= new Zend_Paginator(new Zend_Paginator_Adapter_Array(range(1,$this->total))); $select = $db->select(); //重新设置查询条件 $select->from('draft','*'); foreach(@$array as $key=>$value) { if($key=='keyword') { $condition = '%'.$value.'%'; $select->where("content like ?",$condition); } else { $select->where($key."=?",$value); } } //设置分页 $begin = $pageNum*$perPage; $select->limit($perPage,$begin); $select->order("modifytime desc"); $this->array = $db->fetchAll($select); return $paginator;

在view页面中:

pagination-control.phtml中

<?php echo $this->url(array_merge($params,array('page' => $page))); ?>

这段代码会将post的数据按/key/value的方式组成url,因此使用pagination-control组件可以“传递查询条件”。