请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 8067|回复: 0

[数据操作] findSql分页

[复制链接]
发表于 2012-8-4 16:41:54 | 显示全部楼层 |阅读模式

前面已经介绍了spPager的用法和模板中分页的显示,本文将对spPager作进一步的说明。

1. 使用范围——findAll/findSql

使用findAll分页

  1. $guestbook->spPager($this->spArgs('page', 1), 5)->findAll();
复制代码
使用findSql分页,使用SQL语句的时候分页。
  1. $guestbook->spPager($this->spArgs('page', 1), 5)->findSql('select test_guestbook.* from test_guestbook');
复制代码
2. 使用SQL的限制

当使用findSql来进行查找分页的时候,请注意以下两点:

  • SQL语句最外围不能使用limit语句,因为spPager会自动加入limit计算。
  • SQL语句获取的字段中,务必加入“表名.”进行区分,同时务必加入主键,这点主要SQL语句涉及到多表关联或子查询的时候需要注意。
3. 扩大使用范围

spPager仅支持findAll和findSql两个函数进行分页,如果需要对开发者写作的自定义model函数进行分页,建议在参数中加入页码等。

假设我们guestbook的model类有个叫findme的函数:

  1. <?php
  2. class guestbook extends spModel
  3. {
  4.         public $pk = "id"; // 每个留言唯一的标志,可以称为主键
  5.         public $table = "guestbook"; // 数据表的名称
  6.   
  7.         public $pagedata = null; // 定义成员变量来获取分页数据
  8.         public function findme($condition, $page = 1, $pageSize = 10)
  9.         {
  10.                 $result = $this->spPager($page, $pageSize)->findAll($condition); // 使用spPager
  11.                 $this->pagedata = $this->spPager()->getPager(); // 对成员变量赋值
  12.                 return $result;
  13.         }  
  14. }
  15. ?>
复制代码
在控制器中:
  1. $guestbook = spClass("guestbook");
  2. $this->results = $guestbook->findme(array('name'=>'jake'), $this->spArgs('page', 1), 10 ); // 当前页是通过spArgs来输入
  3. $this->pager = $guestbook->pagedata; // 获取guestbook的成员变量值,也就是分页数据
  4. dump($this->pager);
复制代码
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-2-21 07:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表