fleaphp中的常用函数findAll,主要用与构造sql语句并查询数据,findAll方法的使用和示例

findAll的函数原型是/**

* 查询所有符合条件的记录及相关数据,返回一个包含多行记录的二维数组,失败时返回 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)

{

list($whereby, $distinct) = $this->getWhere($conditions);

// 处理排序

$sortby = $sort != '' ? " ORDER BY {$sort}" : '';

// 处理 $limit

if (is_array($limit)) {

list($length, $offset) = $limit;

} else {

$length = $limit;

$offset = null;

}

// 构造从主表查询数据的 SQL 语句

$enableLinks = count($this->links) > 0 && $this->autoLink && $queryLinks;

$fields = $this->dbo->qfields($fields, $this->fullTableName, $this->schema);

if ($enableLinks) {

// 当有关联需要处理时,必须获得主表的主键字段值

$sql = "SELECT {$distinct} {$this->qpka}, {$fields} FROM {$this->qtableName} {$whereby} {$sortby}";

} else {

$sql = "SELECT {$distinct} {$fields} FROM {$this->qtableName} {$whereby} {$sortby}";

}

// 根据 $length 和 $offset 参数决定是否使用限定结果集的查询

if (null !== $length || null !== $offset) {

$result = $this->dbo->selectLimit($sql, $length, $offset);

} else {

$result = $this->dbo->execute($sql);

}

if ($enableLinks) {

/**

* 查询时同时将主键值单独提取出来,

* 并且准备一个以主键值为键名的二维数组用于关联数据的装配

*/

$pkvs = array();

$assocRowset = null;

$rowset = $this->dbo->getAllWithFieldRefs($result, $this->pka, $pkvs, $assocRowset);

$in = 'IN (' . implode(',', array_map(array(& $this->dbo, 'qstr'), $pkvs)) . ')';

} else {

$rowset = $this->dbo->getAll($result);

}

unset($result);

// 如果没有关联需要处理或者没有查询结果,则直接返回查询结果

if (!$enableLinks || empty($rowset) || !$this->autoLink) {

return $rowset;

}

/**

* 遍历每一个关联对象,并从关联对象获取查询语句

*

* 查询获得数据后,将关联表的数据和主表数据装配在一起

*/

$callback = create_function('& $r, $o, $m', '$r[$m] = null;');

foreach ($this->links as $link) {

/* @var $link FLEA_Db_TableLink */

$mn = $link->mappingName;

if (!$link->enabled || !$link->linkRead) { continue; }

if (!$link->countOnly) {

array_walk($assocRowset, $callback, $mn);

$sql = $link->getFindSQL($in);

$this->dbo->assemble($sql, $assocRowset, $mn, $link->oneToOne, $this->pka, $link->limit);

} else {

$link->calcCount($assocRowset, $mn, $in);

}

}

return $rowset;

}

findAll各个参数的说明

$conditions = null, 查询条件

通常数组,包含字段名和值

例如array('fieldname' => 'value1','fieldnameb' => 'value2')

$sort = null, 排序

字段以及排序的方式,通常这是一个字串

例如'ID ASC,post_date DESC' //如果只有一个条件可以这样 'ID ASC'

$limit = null, 限定数量

通常可以是一个数字,或者是从多少位开始取多少个结果'3,10' //意思是从第10个开始,取3个记录,也可以直接数字3 表示取3条记录

$fields = '*', 需要查询显示的字段,默认全部显示

例如array('ID','post_title','post_parent')

$queryLinks = true

fleaphp函数findAll方法的使用和示例$rowsets = $tableposts->findAll(array('post_type'=>'post'),'ID ASC,post_date DESC',array(10,0),array('ID','post_title','post_parent'));

dump($rowsets);

php findall,fleaphp常用函数findAll方法的使用和示例相关推荐

  1. SQLserver 常用函数适用方法(转载)

    SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值 ...

  2. 【终结版】C#常用函数和方法集汇总

    C#里面的常用的函数和方法非常重要,然而做题的时候会经常忘记这些封装好的方法,所以我总结一下 C#常用函数和方法集. [1]C#操作字符串的常用使用方法 在 C# 中,您可以使用字符数组来表示字符串, ...

  3. Python列表操作常用函数、方法大全

    目录 简介 列表基本方法 访问列表元素(即索引) index方法 enumerate()函数 在列表中添加元素 append方法 insert方法 修改列表元素 删除列表元素 del语句 pop()函 ...

  4. Python 批量创建线程及threading.Thread类的常用函数及方法

    在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...

  5. python常用方法总结-Python3常用函数、方法总结(持续更新…)

    最近刷LeetCode,自己自娱自乐完之后去discussion看大佬们的各种巧妙解法,总是止不住的双击666--加上最近Python3用的比较多(虽然Python实在不推荐跑算法题目,一是运行效率太 ...

  6. python基础:数组常用函数和方法

    列表的特点: 有序且可重复 1.创建一个列表: li = ["zhangsan","lisi",2,4,6],当然也可以创建一个空列表 li = [ ] 2.列 ...

  7. abs函数的使用方法 oracle_SQL Server 常用函数使用方法

    1.SubString():用于截取指定字符串的方法.该方法有三个参数: 参数1:用于指定要操作的字符串. 参数2:用于指定要截取的字符串的起始位置,起始值为 1 . 参数3:用于指定要截取的长度. ...

  8. Python :字符串,常用函数。list常用函数,方法。

    字符串: text="only YOU Loving yoU,你是我的唯一,jUst YoU,我能等你下课吗?能不能一起去逛街?达能小王子" #大小写转换 text.upper() ...

  9. c#.net常用函数和方法集

    1.DateTime   数字型          System.DateTime currentTime= new System.DateTime();     1.1 取当前年月日时分秒      ...

最新文章

  1. Caused by: java.lang.RuntimeException: can not run elasticsearch as root
  2. 《Sibelius 脚本程序设计》连载(二十六) - 2.13 utils库中的函数
  3. Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python
  4. python代码示例下载-python下xml解析库lxml最新版下载安装以及代码示例
  5. [Spring cloud 一步步实现广告系统] 10. 使用Ribbon 实现微服务调用
  6. Mahout推荐算法API详解
  7. 链表反转2(Reverse Linked List II)
  8. PHP类实例教程(七):析构函数与PHP的垃圾回收
  9. CSS Hack 汇总速查一览
  10. 图像放大 问题 即 二维数组放大
  11. android padding作用,android:padding和android:layout_margin的区别
  12. 华为交换机telnet和ftp服务开启/关闭命令
  13. 修改文件中的内容,使用fileinput模块
  14. 50年代黄岩师专_300多位30、40和50年代获得第一份技术工作的开发人员的故事
  15. Spring boot整合shiro权限管理
  16. Response.Write 用法总结
  17. wifi 中间人攻击_揭秘3·15晚会“Wi-Fi中间人攻击”的操作原理
  18. spring security 注解_Spring框架使用@Autowired自动装配引发的讨论
  19. 历届电大计算机网考试题及答案,电大2012年计算机应用基础网考统考试题及答案...
  20. 二元函数泰勒公式例题_泰勒公式与函数展开的操作方法

热门文章

  1. 多任务Python爬虫
  2. 单进程服务器-非堵塞模式(python版)
  3. MySQL的数据类型和约束
  4. Python Flask 中的路由
  5. 如何通过序列化在网络间传递对象,网络协议:轻松定义自己的网络通讯协议
  6. 漫步数学分析六——聚点
  7. 苹果市场占有率_三星、华为、苹果位列前三!外媒公布2020年Q2全球智能手机销量排行榜...
  8. Jupyter notebook中怎么添加Pytorch运行环境
  9. leetcode —— 206. 反转链表
  10. leetcode - 739. 每日温度