直接利用findAll进行分页查询(限定结果集查询)

findAll是 FLEA_Db_TableDataGateway 类的一个方法,其函数类型如下:

    /**
     * 查询所有符合条件的记录及相关数据,返回一个包含多行记录的二维数组,失败时返回 false
     *
     * @param mixed $conditions
     * @param string $sort
     * @param mixed $limit
     * @param mixed $fields
     * @param mixed $queryLinks
     *
     * @return array
     */
    function & findAll($conditions = null, $sort = null, $limit = null, $fields = '*', $queryLinks = true)


其中第三个参数可以引入数组参数。看该函数中处理$limit参数的代码可得到判 断:

        // 处理 $limit
        if (is_array($limit)) {
            list($length, $offset) = $limit;
        } else {
            $length = $limit;
            $offset = null;
        }
 


再根据其中的一 段代码:

        // 根据 $length 和 $offset 参数决定是否使用限定结果集的查询
        if (null !== $length || null !== $offset) {
            $result = $this->dbo->selectLimit($sql, $length, $offset);
        } else {
            $result = $this->dbo->execute($sql);
        }

 

追 踪分析selectLimit方法(FLEA_Db_Driver_Mysql数据库底层驱动类),分析该方法的代码段:

        if (!is_null($offset)) {
            $sql .= " LIMIT " . (int)$offset;
            if (!is_null($length)) {
                $sql .= ', ' . (int)$length;
            } else {
                $sql .= ', 4294967294';
            }
        }

 

从中可 知,findAll的第三个参数只要传入数组参数array($length, $offset)就可以进行分页,即进行限定结果集的查询。传入的数组参数说明:$length 为每页显示记录数;$offset 为偏移量,计算公式:$offset = ($page - 1) * $length,公式中的 $page 为当前页码,从 1 算起。

大 家分析一下 Flea_Helper_Page 类的代码可知,FleaPHP 的分页助手类其实也是根据此原理来进行分页的。

本人论坛 贴:http://qeephp.com/bbs/thread-7362-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值