包 | database |
---|---|
类层次 | class QDB_Select |
QDB_Select 类实现了一个数据库查询接口,提供了进行复杂查询的能力
开发者可以通过下述几个途径构造一个 QDB_Select 对象(查询对象):
1、从数据库连接的 select() 获得一个查询对象; 2、通过某个表数据入口对象的 find() 方法发起一个查询来获得查询对象; 3、从 ActiveRecord 继承类的 find() 方法发起查询来获得一个查询对象。
QDB_Select 可以使用连贯方法操作,例如:
$select->from('posts', 'title, body') ->order('created DESC') ->limitPage($page, $page_size) ->query();
查询对象最后通过 query() 方法来进行实际查询并返回查询结果(数组或对象)。
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$_parts_init | array | 用于初始化一个查询的内容 | QDB_Select |
$_aggregate_types | array | 可用的集合类型 | QDB_Select |
$_join_types | array | 可用的 JOIN 操作类型 | QDB_Select |
$_union_types | array | 可用的 UNICODE 类型 | QDB_Select |
$_query_params_init | array | 查询参数初始化 | QDB_Select |
$_sql | string | 手工指定的 SQL 语句 | QDB_Select |
$_parts | array | 构造查询的各个部分 | QDB_Select |
$_links | array | 查询可以使用的关联 | QDB_Select |
$_query_params | array | 查询参数(仅用于一次查询) | QDB_Select |
$_current_table | string | 指示查询上下文中当前的表名称或其别名 | QDB_Select |
$_joined_tables | array | 当前查询已经连接的数据表 | QDB_Select |
$_columns_mapping | array | 字段名映射 | QDB_Select |
$_meta | QDB_ActiveRecord_Meta | 当前查询所服务的 ActiveRecord 继承类的元信息对象 | QDB_Select |
$_conn | QDB_Adapter_Abstract | 执行数据库查询的适配器 | QDB_Select |
方法 | 描述 | 定义于 |
---|---|---|
__construct() | 构造函数 | QDB_Select |
setConn() | 设置要使用的数据库访问对象 | QDB_Select |
getConn() | 返回当前使用的数据库访问对象 | QDB_Select |
setSQL() | 手动设置查询 SQL | QDB_Select |
distinct() | 创建一个 SELECT DISTINCT 查询 | QDB_Select |
from() | 添加一个要查询的表及其要查询的字段 | QDB_Select |
columns() | 添加要查询的字段 | QDB_Select |
setColumns() | 指定要查询的字段 | QDB_Select |
where() | 添加一个 WHERE 查询条件,与其他 WHERE 条件之间以 AND 布尔运算符连接 | QDB_Select |
orWhere() | 添加一个 WHERE 查询条件,与其他 WHERE 条件之间以 OR 布尔运算符连接 | QDB_Select |
link() | 添加关联 | QDB_Select |
join() | 添加一个 JOIN 数据表和字段到查询中 | QDB_Select |
joinInner() | 添加一个 INNER JOIN 数据表和字段到查询中 | QDB_Select |
joinLeft() | 添加一个 LEFT JOIN 数据表和字段到查询中 | QDB_Select |
joinRight() | 添加一个 RIGHT JOIN 数据表和字段到查询中 | QDB_Select |
joinFull() | 添加一个 FULL OUTER JOIN 数据表和字段到查询中 | QDB_Select |
joinCross() | 添加一个 CROSS JOIN 数据表和字段到查询中 | QDB_Select |
joinNatural() | 添加一个 NATURAL JOIN 数据表和字段到查询中 | QDB_Select |
union() | 添加一个 UNION 查询 | QDB_Select |
group() | 指定 GROUP BY 子句 | QDB_Select |
having() | 添加一个 HAVING 条件,与其他 HAVING 条件之间以 AND 布尔运算符连接 | QDB_Select |
orHaving() | 添加一个 HAVING 条件,与其他 HAVING 条件之间以 OR 布尔运算符连接 | QDB_Select |
order() | 添加排序 | QDB_Select |
one() | 指示仅查询第一个符合条件的记录 | QDB_Select |
all() | 指示查询所有符合条件的记录 | QDB_Select |
limit() | 限制查询结果总数 | QDB_Select |
top() | 限定查询结果总数 | QDB_Select |
limitPage() | 设置分页查询 | QDB_Select |
getPagination() | 获得分页信息 | QDB_Select |
fetchPagination() | 在查询时,将分页信息存入 $return 参数 | QDB_Select |
forUpdate() | 是否构造一个 FOR UPDATE 查询 | QDB_Select |
count() | 统计符合条件的记录数 | QDB_Select |
getCount() | 统计符合条件的记录数,并立即返回结果 | QDB_Select |
avg() | 统计平均值 | QDB_Select |
getAvg() | 统计平均值,并立即返回结果 | QDB_Select |
max() | 统计最大值 | QDB_Select |
getMax() | 统计最大值,并立即返回结果 | QDB_Select |
min() | 统计最小值 | QDB_Select |
getMin() | 统计最小值,并立即返回结果 | QDB_Select |
sum() | 统计合计 | QDB_Select |
getSum() | 统计合计,并立即返回结果 | QDB_Select |
asObject() | 指示将查询结果封装为特定的 ActiveRecord 对象 | QDB_Select |
asArray() | 指示将查询结果返回为数组 | QDB_Select |
asColl() | 指示将查询结果作为 QDB_ActiveRecord_Association_Coll 集合返回 | QDB_Select |
columnMapping() | 设置一个或多个字段的映射名,如果 $mapping_to 为 NULL,则取消对指定字段的映射 | QDB_Select |
recursion() | 设置递归关联查询的层数(默认为1层) | QDB_Select |
linkForRecursion() | 指定使用递归查询时,需要查询哪个关联的 target_key 字段 | QDB_Select |
getPart() | 获得用于构造查询的指定部分内容 | QDB_Select |
reset() | 重置整个查询对象或指定部分 | QDB_Select |
get() | 执行查询并返回指定数量的结果 | QDB_Select |
getById() | 返回符合主键的一个结果 | QDB_Select |
getOne() | 仅返回一个结果 | QDB_Select |
getAll() | 执行查询并返回所有结果,等同于 ->all()->query() | QDB_Select |
query() | 执行查询 | QDB_Select |
getQueryHandle() | 执行查询,返回结果句柄 | QDB_Select |
__toString() | 获得查询字符串 | QDB_Select |
__call() | 魔法方法 | QDB_Select |
_parseTableName() | 回调函数,用于分析查询中包含的关联表名称 | QDB_Select |
方法 | 描述 | 定义于 |
---|---|---|
_queryArray() | 查询,并返回数组结果 | QDB_Select |
_queryObjects() | 查询,并返回对象或对象集合 | QDB_Select |
_renderDistinct() | 构造 DISTINCT 子句 | QDB_Select |
_renderColumns() | 构造查询字段子句 | QDB_Select |
_renderAggregate() | 构造集合查询字段 | QDB_Select |
_renderFrom() | 构造 FROM 子句 | QDB_Select |
_renderUnion() | 构造 UNION 查询 | QDB_Select |
_renderWhere() | 构造 WHERE 子句 | QDB_Select |
_renderGroup() | 构造 GROUP 子句 | QDB_Select |
_renderHaving() | 构造 HAVING 子句 | QDB_Select |
_renderOrder() | 构造 ORDER 子句 | QDB_Select |
_renderForUpdate() | 构造 FOR UPDATE 子句 | QDB_Select |
_join() | 添加一个 JOIN | QDB_Select |
_addCols() | 添加到内部的数据表->字段名映射数组 | QDB_Select |
_addConditions() | 添加查询条件的内容方法 | QDB_Select |
_addAggregate() | 添加一个集合查询 | QDB_Select |
_getCurrentTableName() | 获得当前表的名称 | QDB_Select |
用于初始化一个查询的内容
可用的集合类型
可用的 JOIN 操作类型
可用的 UNICODE 类型
查询参数初始化
手工指定的 SQL 语句
构造查询的各个部分
查询可以使用的关联
查询参数(仅用于一次查询)
指示查询上下文中当前的表名称或其别名
当前查询已经连接的数据表
字段名映射
当前查询所服务的 ActiveRecord 继承类的元信息对象
执行数据库查询的适配器
查询ID
public void __construct($conn)
$conn | QDB_Adapter_Abstract | |
{return} |
构造函数
public QDB_Select setConn($conn)
$conn | QDB_Adapter_Abstract | |
{return} | QDB_Select |
设置要使用的数据库访问对象
public QDB_Adapter_Abstract getConn()
返回当前使用的数据库访问对象
public QDB_Select setSQL($sql)
$sql | string | |
{return} | QDB_Select |
手动设置查询 SQL
public QDB_Select distinct($flag, $cols)
$flag | bool | 指示是否是一个 SELECT DISTINCT 查询(默认 true) |
$cols | ||
{return} | QDB_Select |
创建一个 SELECT DISTINCT 查询
public QDB_Select from($table, $cols)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
{return} | QDB_Select |
添加一个要查询的表及其要查询的字段
$table 参数指定要从哪个数据表查询数据。该参数可以是字符串、名值对或者一个表数据入口对象。
如果 $table 是一个字符串,则假定为一个表名称,或者是“表名称 AS 别名”; 如果 $table 是一个表数据入口对象,则表名称由表数据入口对象确定; 如果 $table 是一个名值对,则键名假定为要在查询中使用的表别名,键值可以是字符串或表数据入口对象。
如果要指定数据表所属 schema,可以采用如下形式:
$select->from('schema名.表名称'); // 或者 $select->from(array('表别名' => 'schema名.表名称'));
如果 $table 是一个表数据入口对象,则 schmea 由表数据入口对象确定。
$cols 参数指定了要查询该表的哪些字段,如果不指定则默认为 '*'(既查询所有字段)。 $cols 可以是一个以“,”分割的字段名字符串,也可以是一个数组,以及一个 QDB_Expr 对象。
例如:
// SELECT `posts`.`title`, `posts`.`body` FROM `posts` $select->from('posts', 'title, body');
还可以为字段名指定查询时使用的别名,例如:
// 指定字段别名 // SELECT `posts`.`title` AS `t` FROM `posts` $select->from('posts', array('t' => 'title'));
$cols 是字符串或数组时,字段名会被自动转义。 如果 $cols 是一个 QDB_Expr 对象,则表达式中的字段名需要使用“[]”来指定转义。
// SELECT LEFT(`posts`.`title`, 5) FROM `posts` $expr = new QDB_Expr('LEFT([title], 5)'); $select->form('posts', $expr); // SELECT LEFT(`p`.`title`, 5) FROM `posts` `p` $expr = new QDB_Expr('LEFT([title], 5)'); $select->form(array('p' => 'posts'), $expr);
from() 的更多用法:
// 指定要查询的数据表及字段 $select->from('posts', 'title, body'); // 为数据表指定别名 $select->from(array('别名' => '表名称'), '字段名, 字段名')); // 通过表数据入口指定表 $select->form($table_posts, '字段名, 字段名'); // 通过表数据入口指定表和别名 $select->form(array('别名' => $table_posts), array('别名' => '字段名', '字段名'));
如果 $table 参数为空,则通过 $cols 参数指定的字段名前面不会添加数据表名称。
public QDB_Select columns($cols, $table)
$cols | array|string|QDB_Expr | |
$table | array|string|QDB_Table | |
{return} | QDB_Select |
添加要查询的字段
$cols 和 $table 参数的规则同 from() 方法。
如果没有指定 $table 参数,则假定这些字段属于第一个 FROM 操作添加的表。 但是也可以用“表名称.字段名”的方式来指定字段所属表。
除此以外,还可以通过 $table 参数批量指定这些字段所属表。
public QDB_Select setColumns($cols, $table)
$cols | array|string|QDB_Expr | |
$table | array|string|QDB_Table | |
{return} | QDB_Select |
指定要查询的字段
$cols 和 $table 参数的规则同 from() 方法。
如果没有指定 $table 参数,则假定这些字段属于第一个 FROM 操作添加的表。 但是也可以用“表名称.字段名”的方式来指定字段所属表。
除此以外,还可以通过 $table 参数批量指定这些字段所属表。
public QDB_Select where($cond)
$cond | string|array|QDB_Expr|QDB_Cond | 查询条件 |
{return} | QDB_Select |
添加一个 WHERE 查询条件,与其他 WHERE 条件之间以 AND 布尔运算符连接
where() 方法的参数格式是可变的,具有下列几种形式:
// 使用字符串做查询条件 $select->where('id = 1') // 使用 ? 作为参数占位符 $select->where('id = ?', $id) // 使用多个参数占位符 $select->where('id = ? AND level_ix > ?', $id, $level_ix) // 使用数组提供多个参数占位符的值 $select->where('id = ? AND level_ix > ?', array($id, $level_ix)) // 使用命名参数 $select->where('id = :id AND level_ix > :level_ix', array( 'id' => $id, 'level_ix' => $level_ix )) // 使用名值对 $select->where(array('id' => $id, 'level_ix' => $level_ix));
注意:在使用命名参数时,where() 的第二个参数必须是一个名值对数组。其中键名是参数名。
在查询条件中,还可以使用“[]”来指定需要转义的字段名,例如:
$select->where('[id] = 1'); $select->where('[posts.id'] = 1');
除了字符串和数组,$cond 参数还可以是 QDB_Expr 对象,例如:
$expr = new QDB_Expr('[hits] < AVG([hits])'); $select->where($expr);
如果没有在字段名中指定表名称或者别名,则假定所有字段都是第一个通过 from() 指定的表。
更复杂的查询条件,可以使用 QDB_Cond 对象来构造。
public QDB_Select orWhere($cond)
$cond | mixed | |
{return} | QDB_Select |
添加一个 WHERE 查询条件,与其他 WHERE 条件之间以 OR 布尔运算符连接
参数规范参考 where() 方法。
public QDB_Select link($link)
$link | QDB_ActiveRecord_Association_Abstract|array | |
{return} | QDB_Select |
添加关联
关联会在指定查询条件和进行递归查询时起作用。
public QDB_Select join($table, $cols, $cond)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
{return} | QDB_Select |
添加一个 JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from(),$cond 参数的规则同 where()。
public QDB_Select joinInner($table, $cols, $cond)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
{return} | QDB_Select |
添加一个 INNER JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from(),$cond 参数的规则同 where()。
public QDB_Select joinLeft($table, $cols, $cond)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
{return} | QDB_Select |
添加一个 LEFT JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from(),$cond 参数的规则同 where()。
public QDB_Select joinRight($table, $cols, $cond)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
{return} | QDB_Select |
添加一个 RIGHT JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from(),$cond 参数的规则同 where()。
public QDB_Select joinFull($table, $cols, $cond)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
{return} | QDB_Select |
添加一个 FULL OUTER JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from(),$cond 参数的规则同 where()。
public QDB_Select joinCross($table, $cols)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
{return} | QDB_Select |
添加一个 CROSS JOIN 数据表和字段到查询中
$table 和 $cols 参数的规则同 from()。
public QDB_Select joinNatural($table, $cols)
$table | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
{return} | QDB_Select |
添加一个 NATURAL JOIN 数据表和字段到查询中
public QDB_Select union($select, $type)
$select | array|string|QDB_Select | |
$type | ||
{return} | QDB_Select |
添加一个 UNION 查询
$select 可以是一个字符串或一个 QDB_Select 对象,或者包含上述两者的数组。
public QDB_Select group($expr)
$expr | string|QDB_Expr|array | |
{return} | QDB_Select |
指定 GROUP BY 子句
$expr 可以是一个字符串或一个 QDB_Expr 对象,或者包含上述两者的数组。
如果需要在表达式中使用转义后的字段名,可以采用如下模式:
$select->group('SUM([hits])');
所有被 [ 和 ] 包括的字段名将自动进行转义。如果有需要,还可以进一步指定字段所属的表或表别名。
$select->group('SUM([mytable.hits])');
public QDB_Select having($cond)
$cond | string|array|QDB_Expr|QDB_Cond | 查询条件 |
{return} | QDB_Select |
添加一个 HAVING 条件,与其他 HAVING 条件之间以 AND 布尔运算符连接
参数规范参考 where() 方法。
public QDB_Select orHaving($cond)
$cond | string|array|QDB_Expr|QDB_Cond | 查询条件 |
{return} | QDB_Select |
添加一个 HAVING 条件,与其他 HAVING 条件之间以 OR 布尔运算符连接
参数规范参考 where() 方法。
public QDB_Select order($expr)
$expr | string | |
{return} | QDB_Select |
添加排序
$expr 可以是字符串或者 QDB_Expr 对象,例如:
$select->order('title'); $select->order('users.username DESC'); $select->order(new QDB_Expr('SUM(hits) ASC');
public QDB_Select one()
指示仅查询第一个符合条件的记录
public QDB_Select all()
指示查询所有符合条件的记录
public QDB_Select limit($offset, $count)
$offset | int | 从结果集的哪个位置开始查询(0 为第一条) |
$count | int | 只查询多少条数据 |
{return} | QDB_Select |
限制查询结果总数
public QDB_Select top($count)
$count | int | |
{return} | QDB_Select |
限定查询结果总数
public QDB_Select limitPage($page, $page_size, $base)
$page | int | 要查询的页码 |
$page_size | int | 页的大小 |
$base | int | 页码基数 |
{return} | QDB_Select |
设置分页查询
limitPage() 是用于分页查询的主要方法。 使用时通常只需要指定 $page 和 $page_size 参数。
$page 参数指定要查询哪一页的数据,$page_size 指定了页大小。 默认情况下,$page 为 1 时表示要查询第 1 页。
如果希望用 $page = 0 来表示查询第一页,应该指定 $base 参数为 0。
public array getPagination()
获得分页信息
要使用该方法,必须先用 limitPage() 指定有效的分页参数。
该方法返回一个数组,包含下列信息:
record_count: 符合查询条件的记录数 page_count: 按照页大小计算出来的总页数 first: 第一页的索引,等同于 limitPage() 的 $base 参数,默认为 1 last: 最后一页的索引 current: 当前页的索引 next: 下一页的索引 prev: 上一页的索引 page_size: 页大小 page_base: 页码基数(也就是第一页的索引值,默认为 1)
获得这个数组后,就可以通过 WebControls 或者其他途径构造分页导航条等用户界面内容。
public QDB_Select fetchPagination($return)
$return | mixed | |
{return} | QDB_Select |
在查询时,将分页信息存入 $return 参数
fetchPagination() 方法可以让开发者更连贯的操作 QDB_Select 对象。
例如:
$pagination = null; $posts = Post::find('is_published = ?', true)
->all()
->limitPage($page, $page_size)
->fetchPagination($pagination)
->query();
上述代码执行后,$pagination 将包含查询的分页信息。
public QDB_Select forUpdate($flag)
$flag | boolean | |
{return} | QDB_Select |
是否构造一个 FOR UPDATE 查询
如果查询出记录后马上就要更新并写回数据库,则可以调用 forUpdate() 方法来指示这种情况。 此时数据库会尝试对查询出来的记录加锁,避免在数据更新回数据库之前被其他查询改变。
public QDB_Select count($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
统计符合条件的记录数
$field 参数指定用于统计的字段或表达式。
public int getCount($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | int |
统计符合条件的记录数,并立即返回结果
public QDB_Select avg($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
统计平均值
public int|float getAvg($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | int|float |
统计平均值,并立即返回结果
public QDB_Select max($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
统计最大值
public int|float getMax($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | int|float |
统计最大值,并立即返回结果
public QDB_Select min($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
统计最小值
public int|float getMin($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | int|float |
统计最小值,并立即返回结果
public QDB_Select sum($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
统计合计
public int|float getSum($field, $alias)
$field | string|QDB_Expr | |
$alias | string | |
{return} | int|float |
统计合计,并立即返回结果
public QDB_Select asObject($class_name)
$class_name | string | |
{return} | QDB_Select |
指示将查询结果封装为特定的 ActiveRecord 对象
通常对于从 ActiveRecord 发起的查询不需要再调用该方法,QeePHP 会确保此类查询都返回对象。 但如果是从表数据入口发起的查询,并且希望返回对象,就应该调用这个方法指定一个类名称。
类名称所指定的 ActiveRecord 继承类应该是一个适合返回结果数据结构的对象,否则会导致构造对象失败。
public QDB_Select asArray()
指示将查询结果返回为数组
指示不管查询是由什么来源发起的,都将查询结果以数组方式返回。
public QDB_Select asColl($as_coll)
$as_coll | boolean | |
{return} | QDB_Select |
指示将查询结果作为 QDB_ActiveRecord_Association_Coll 集合返回
public QDB_Select columnMapping($name, $mapping_to)
$name | array|string | |
$mapping_to | string | |
{return} | QDB_Select |
设置一个或多个字段的映射名,如果 $mapping_to 为 NULL,则取消对指定字段的映射
映射名是指可以在查询参数中使用映射名作为字段名。 QDB_Select 会负责在生成查询时将映射名转换为实际的字段名。
例如:
$select->columnMapping('title', 'post_title') ->where(array('post_title' => $title)); // 生成的查询条件是 `title` = {$title} 而不是 `post_title` = {$title}
public QDB_Select recursion($recursion)
$recursion | int | |
{return} | QDB_Select |
设置递归关联查询的层数(默认为1层)
假设 A 关联到 B,B 关联到 C,而 C 关联到 D。则通过 recursion 参数, 我们可以指定从 A 出发的查询要到达哪一个关联层次才停止。
默认的 $recursion = 1,表示从 A 出发的查询只查询到 B 的数据就停止。
注意:对于来自 ActiveRecord 的查询,无需指定该参数。 因为可以利用 ActiveRecord 的延迟加载能力自动查询更深层次的数据。
public QDB_Select linkForRecursion($link)
$link | QDB_ActiveRecord_Association_Abstract | |
{return} | QDB_Select |
指定使用递归查询时,需要查询哪个关联的 target_key 字段
public mixed getPart($part)
$part | string | |
{return} | mixed |
获得用于构造查询的指定部分内容
public QDB_Select reset($part)
$part | string | |
{return} | QDB_Select |
重置整个查询对象或指定部分
public mixed get($num, $included_links)
$num | int | |
$included_links | array|string | |
{return} | mixed |
执行查询并返回指定数量的结果
public mixed getById($id, $included_links)
$id | string|int | |
$included_links | array|string | |
{return} | mixed |
返回符合主键的一个结果
public mixed getOne($included_links)
$included_links | array|string | |
{return} | mixed |
仅返回一个结果
public mixed getAll($included_links)
$included_links | array|string | |
{return} | mixed |
执行查询并返回所有结果,等同于 ->all()->query()
public mixed query($included_links)
$included_links | array|string | |
{return} | mixed |
执行查询
$included_links 用于指定查询时要包含的关联。
默认情况下,QDB_Select 对象会以数组形式返回查询结果。 在这种模式下,关联的数据会被立即查询出来,并嵌入查询结果中。
如果指定 QDB_Select 以 ActiveRecord 对象返回查询结果,则只有 $included_links 指定的关联会被立即查询。 否则在第一次访问返回的 ActiveRecord 对象的聚合属性时,才会进行关联对象的查询。
public QDB_Result_Abstract getQueryHandle()
执行查询,返回结果句柄
public string __toString()
获得查询字符串
public mixed __call($method, $args)
$method | string | |
$args | array | |
{return} | mixed |
魔法方法
protected array _queryArray($clean_up)
$clean_up | boolean | |
{return} | array |
查询,并返回数组结果
protected QDB_ActiveRecord_Association_Coll|QDB_ActiveRecord_Abstract _queryObjects()
查询,并返回对象或对象集合
protected string _renderDistinct()
构造 DISTINCT 子句
protected string _renderColumns()
构造查询字段子句
protected string _renderAggregate()
构造集合查询字段
protected string _renderFrom()
构造 FROM 子句
protected string _renderUnion()
构造 UNION 查询
protected string _renderWhere()
构造 WHERE 子句
protected string _renderGroup()
构造 GROUP 子句
protected string _renderHaving()
构造 HAVING 子句
protected string _renderOrder()
构造 ORDER 子句
protected string _renderForUpdate()
构造 FOR UPDATE 子句
protected QDB_Select _join($join_type, $name, $cols, $cond, $cond_args)
$join_type | int | |
$name | array|string|QDB_Table | |
$cols | array|string|QDB_Expr | |
$cond | array|string|QDB_Expr|QDB_Cond | |
$cond_args | array | |
{return} | QDB_Select |
添加一个 JOIN
protected void _addCols($table_name, $cols)
$table_name | string | |
$cols | array|string|QDB_Expr | |
{return} |
添加到内部的数据表->字段名映射数组
protected QDB_Select _addConditions($cond, $args, $part_type, $bool)
$cond | string|array|QDB_Expr|QDB_Cond | |
$args | array | |
$part_type | int | |
$bool | bool | true = AND, false = OR |
{return} | QDB_Select |
添加查询条件的内容方法
protected QDB_Select _addAggregate($type, $field, $alias)
$type | int | |
$field | string|QDB_Expr | |
$alias | string | |
{return} | QDB_Select |
添加一个集合查询
protected string _getCurrentTableName()
获得当前表的名称
public string _parseTableName($table_name)
$table_name | string | |
{return} | string |
回调函数,用于分析查询中包含的关联表名称