`
hegz
  • 浏览: 436663 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

直接利用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

分享到:
评论

相关推荐

    SpringBoot中使用Spring-data-jpa分页查询

    创建一个Repository接口,继承自JpaRepository或者PagingAndSortingRepository,这样就可以使用框架提供的一些默认实现方法,例如findAll、save等。同时,也可以定义一些自定义的查询方法,例如findAllByName(String...

    C# list对象FindAll函数的四种写法

    详细介绍了C#中list对象的FindAll函数4种写法,从中可以看出如何从最完整写法过渡到最简写法的。从中可以明白C#“=>”的含义。

    matlab开发-Findallfiles

    matlab开发-Findallfiles。搜索并列出目录及其子目录中特定类型的文件

    getHibernateTemplate()有模糊查询和 分页

    getHibernateTemplate()有模糊查询和 分页getHibernateTemplate()有模糊查询和 分页

    手机信息的增删改查,分页查询

    手机信息的增删改查,分页查询。 *" pageEncoding="gbk"%> *"%> *"%> *"%> 手机信息   手机列表 编号 类型 ...

    正则表达式findall.py

    这个很基础,就是对正则表达式的最基本的应用,先进阶的就不用看这个了,初学者可以看一下

    关于Python正则表达式 findall函数问题详解

    下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。 代码如下: import re str="a b c d" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.compile("(\w+)\s...

    02-findall分组示例.py

    import re #解释 :先按照整体匹配出来,然后再匹配()中的 # 如果有2个或者多个(),则以元组的方式取显示 s = "A B C D" p1 = re.compile('\w+\s+\w+') print(p1.findall(s)) ...print(p3.findall(s))

    Python re 模块findall() 函数返回值展现方式解析

    主要介绍了Python re 模块findall() 函数返回值展现方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    mongoDB实现分页的方法

    mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的。 下面这个是我的测试数据 db.test.find().sort({“age”:1}); 第一种方法 查询第一页的数据:db.test.find().sort({“age”:1}).limit...

    c#中list.FindAll与for循环的性能对比总结

    最近在网上看到一篇文章,里面说到:List<T>.FindAll的效率竟然比for循环还差,下面是文章的截图: 以上就是baidu出来的一篇文章,让我惊诧不已,因为在AI模块我已经使用了很多FindAll。但是,上文的结论是真的吗?...

    三大框架下分页源代码

    <s:url id="url_next" value="news_findAll.action"> <s:param name="pageNow" value="pageNow+1"></s:param> </s:url> <s:url id="url_first" value="news_findAll.action"> ...

    使用 Node.js 和 MongoDB 的查询性能优化案例,代码中添加了注释.js

    mongodb查询性能 在这个案例中,我们首先使用 ...同时,还可以通过其他方式来进一步优化查询性能,例如使用 projection 选项限制返回的字段、使用 sort 选项排序查询结果、使用 skip 和 limit 选项分页查询等。

    C# List中FindAll用法的一些简单示例

    本篇文章只要是对C# List中FindAll用法的一些简单示例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    java分页 find

    这是我从自己项目中抽取出来的java分页,分为Mysql和Oracle两个,希望能给大家带来帮助

    DataTable 数据存储,FindData数据查询

    数据存储类 将数据库表映射至DataTable 另附加查询类 FindData 对DataTable中数据再度查询 支持模糊查询,范围查询等...

    精华志 C#_List_<T>+Find+Exists+FindAll+Sort用法+范例

    精华志 C#_List_<T>+Find+Exists+FindAll+Sort用法+范例 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码

    Yii使用find findAll查找出指定字段的实现方法

    本文以实例形式展示了Yii使用find findAll查找出指定字段的实现方法,分享给大家供大家参考之用。具体方法如下: 总所周知,采用如下方法: modelName::model() -> find() //找出的是一个对象 modelName::model() ...

Global site tag (gtag.js) - Google Analytics