包 core

包 mvc

包 orm

包 form

包 database

包 helper

包 cache

包 webcontrols

包 behavior

包 exception

包 debug

类 - QDB_Select

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

属性详细说明

$_parts_init 属性

用于初始化一个查询的内容

$_aggregate_types 属性

可用的集合类型

$_join_types 属性

可用的 JOIN 操作类型

$_union_types 属性

可用的 UNICODE 类型

$_query_params_init 属性

查询参数初始化

$_sql 属性

手工指定的 SQL 语句

$_parts 属性

构造查询的各个部分

$_links 属性

查询可以使用的关联

$_query_params 属性

查询参数(仅用于一次查询)

$_current_table 属性

指示查询上下文中当前的表名称或其别名

$_joined_tables 属性

当前查询已经连接的数据表

$_columns_mapping 属性

字段名映射

$_meta 属性

当前查询所服务的 ActiveRecord 继承类的元信息对象

$_conn 属性

执行数据库查询的适配器

$_query_id 属性

查询ID

方法详细说明

__construct() 方法

public void __construct($conn)

$conn QDB_Adapter_Abstract
{return}

构造函数


setConn() 方法

public QDB_Select setConn($conn)

$conn QDB_Adapter_Abstract
{return} QDB_Select

设置要使用的数据库访问对象


getConn() 方法

public QDB_Adapter_Abstract getConn()

返回当前使用的数据库访问对象


setSQL() 方法

public QDB_Select setSQL($sql)

$sql string
{return} QDB_Select

手动设置查询 SQL


distinct() 方法

public QDB_Select distinct($flag, $cols)

$flag bool 指示是否是一个 SELECT DISTINCT 查询(默认 true)
$cols
{return} QDB_Select

创建一个 SELECT DISTINCT 查询


from() 方法

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 参数指定的字段名前面不会添加数据表名称。


columns() 方法

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 参数批量指定这些字段所属表。


setColumns() 方法

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 参数批量指定这些字段所属表。


where() 方法

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 对象来构造。


orWhere() 方法

public QDB_Select orWhere($cond)

$cond mixed
{return} QDB_Select

添加一个 WHERE 查询条件,与其他 WHERE 条件之间以 OR 布尔运算符连接

参数规范参考 where() 方法。


link() 方法

public QDB_Select link($link)

$link QDB_ActiveRecord_Association_Abstract|array
{return} QDB_Select

添加关联

关联会在指定查询条件和进行递归查询时起作用。


join() 方法

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()。


joinInner() 方法

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()。


joinLeft() 方法

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()。


joinRight() 方法

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()。


joinFull() 方法

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()。


joinCross() 方法

public QDB_Select joinCross($table, $cols)

$table array|string|QDB_Table
$cols array|string|QDB_Expr
{return} QDB_Select

添加一个 CROSS JOIN 数据表和字段到查询中

$table 和 $cols 参数的规则同 from()。


joinNatural() 方法

public QDB_Select joinNatural($table, $cols)

$table array|string|QDB_Table
$cols array|string|QDB_Expr
{return} QDB_Select

添加一个 NATURAL JOIN 数据表和字段到查询中


union() 方法

public QDB_Select union($select, $type)

$select array|string|QDB_Select
$type
{return} QDB_Select

添加一个 UNION 查询

$select 可以是一个字符串或一个 QDB_Select 对象,或者包含上述两者的数组。


group() 方法

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])');

having() 方法

public QDB_Select having($cond)

$cond string|array|QDB_Expr|QDB_Cond 查询条件
{return} QDB_Select

添加一个 HAVING 条件,与其他 HAVING 条件之间以 AND 布尔运算符连接

参数规范参考 where() 方法。


orHaving() 方法

public QDB_Select orHaving($cond)

$cond string|array|QDB_Expr|QDB_Cond 查询条件
{return} QDB_Select

添加一个 HAVING 条件,与其他 HAVING 条件之间以 OR 布尔运算符连接

参数规范参考 where() 方法。


order() 方法

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');

one() 方法

public QDB_Select one()

指示仅查询第一个符合条件的记录


all() 方法

public QDB_Select all()

指示查询所有符合条件的记录


limit() 方法

public QDB_Select limit($offset, $count)

$offset int 从结果集的哪个位置开始查询(0 为第一条)
$count int 只查询多少条数据
{return} QDB_Select

限制查询结果总数


top() 方法

public QDB_Select top($count)

$count int
{return} QDB_Select

限定查询结果总数


limitPage() 方法

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。


getPagination() 方法

public array getPagination()

获得分页信息

要使用该方法,必须先用 limitPage() 指定有效的分页参数。

该方法返回一个数组,包含下列信息:

record_count: 符合查询条件的记录数 page_count: 按照页大小计算出来的总页数 first: 第一页的索引,等同于 limitPage() 的 $base 参数,默认为 1 last: 最后一页的索引 current: 当前页的索引 next: 下一页的索引 prev: 上一页的索引 page_size: 页大小 page_base: 页码基数(也就是第一页的索引值,默认为 1)

获得这个数组后,就可以通过 WebControls 或者其他途径构造分页导航条等用户界面内容。


fetchPagination() 方法

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 将包含查询的分页信息。


forUpdate() 方法

public QDB_Select forUpdate($flag)

$flag boolean
{return} QDB_Select

是否构造一个 FOR UPDATE 查询

如果查询出记录后马上就要更新并写回数据库,则可以调用 forUpdate() 方法来指示这种情况。 此时数据库会尝试对查询出来的记录加锁,避免在数据更新回数据库之前被其他查询改变。


count() 方法

public QDB_Select count($field, $alias)

$field string|QDB_Expr
$alias string
{return} QDB_Select

统计符合条件的记录数

$field 参数指定用于统计的字段或表达式。


getCount() 方法

public int getCount($field, $alias)

$field string|QDB_Expr
$alias string
{return} int

统计符合条件的记录数,并立即返回结果


avg() 方法

public QDB_Select avg($field, $alias)

$field string|QDB_Expr
$alias string
{return} QDB_Select

统计平均值


getAvg() 方法

public int|float getAvg($field, $alias)

$field string|QDB_Expr
$alias string
{return} int|float

统计平均值,并立即返回结果


max() 方法

public QDB_Select max($field, $alias)

$field string|QDB_Expr
$alias string
{return} QDB_Select

统计最大值


getMax() 方法

public int|float getMax($field, $alias)

$field string|QDB_Expr
$alias string
{return} int|float

统计最大值,并立即返回结果


min() 方法

public QDB_Select min($field, $alias)

$field string|QDB_Expr
$alias string
{return} QDB_Select

统计最小值


getMin() 方法

public int|float getMin($field, $alias)

$field string|QDB_Expr
$alias string
{return} int|float

统计最小值,并立即返回结果


sum() 方法

public QDB_Select sum($field, $alias)

$field string|QDB_Expr
$alias string
{return} QDB_Select

统计合计


getSum() 方法

public int|float getSum($field, $alias)

$field string|QDB_Expr
$alias string
{return} int|float

统计合计,并立即返回结果


asObject() 方法

public QDB_Select asObject($class_name)

$class_name string
{return} QDB_Select

指示将查询结果封装为特定的 ActiveRecord 对象

通常对于从 ActiveRecord 发起的查询不需要再调用该方法,QeePHP 会确保此类查询都返回对象。 但如果是从表数据入口发起的查询,并且希望返回对象,就应该调用这个方法指定一个类名称。

类名称所指定的 ActiveRecord 继承类应该是一个适合返回结果数据结构的对象,否则会导致构造对象失败。


asArray() 方法

public QDB_Select asArray()

指示将查询结果返回为数组

指示不管查询是由什么来源发起的,都将查询结果以数组方式返回。


asColl() 方法

public QDB_Select asColl($as_coll)

$as_coll boolean
{return} QDB_Select

指示将查询结果作为 QDB_ActiveRecord_Association_Coll 集合返回


columnMapping() 方法

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}

recursion() 方法

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 的延迟加载能力自动查询更深层次的数据。


linkForRecursion() 方法

public QDB_Select linkForRecursion($link)

$link QDB_ActiveRecord_Association_Abstract
{return} QDB_Select

指定使用递归查询时,需要查询哪个关联的 target_key 字段


getPart() 方法

public mixed getPart($part)

$part string
{return} mixed

获得用于构造查询的指定部分内容


reset() 方法

public QDB_Select reset($part)

$part string
{return} QDB_Select

重置整个查询对象或指定部分


get() 方法

public mixed get($num, $included_links)

$num int
$included_links array|string
{return} mixed

执行查询并返回指定数量的结果


getById() 方法

public mixed getById($id, $included_links)

$id string|int
$included_links array|string
{return} mixed

返回符合主键的一个结果


getOne() 方法

public mixed getOne($included_links)

$included_links array|string
{return} mixed

仅返回一个结果


getAll() 方法

public mixed getAll($included_links)

$included_links array|string
{return} mixed

执行查询并返回所有结果,等同于 ->all()->query()


query() 方法

public mixed query($included_links)

$included_links array|string
{return} mixed

执行查询

$included_links 用于指定查询时要包含的关联。

默认情况下,QDB_Select 对象会以数组形式返回查询结果。 在这种模式下,关联的数据会被立即查询出来,并嵌入查询结果中。

如果指定 QDB_Select 以 ActiveRecord 对象返回查询结果,则只有 $included_links 指定的关联会被立即查询。 否则在第一次访问返回的 ActiveRecord 对象的聚合属性时,才会进行关联对象的查询。


getQueryHandle() 方法

public QDB_Result_Abstract getQueryHandle()

执行查询,返回结果句柄


__toString() 方法

public string __toString()

获得查询字符串


__call() 方法

public mixed __call($method, $args)

$method string
$args array
{return} mixed

魔法方法


_queryArray() 方法

protected array _queryArray($clean_up)

$clean_up boolean
{return} array

查询,并返回数组结果


_queryObjects() 方法

protected QDB_ActiveRecord_Association_Coll|QDB_ActiveRecord_Abstract _queryObjects()

查询,并返回对象或对象集合


_renderDistinct() 方法

protected string _renderDistinct()

构造 DISTINCT 子句


_renderColumns() 方法

protected string _renderColumns()

构造查询字段子句


_renderAggregate() 方法

protected string _renderAggregate()

构造集合查询字段


_renderFrom() 方法

protected string _renderFrom()

构造 FROM 子句


_renderUnion() 方法

protected string _renderUnion()

构造 UNION 查询


_renderWhere() 方法

protected string _renderWhere()

构造 WHERE 子句


_renderGroup() 方法

protected string _renderGroup()

构造 GROUP 子句


_renderHaving() 方法

protected string _renderHaving()

构造 HAVING 子句


_renderOrder() 方法

protected string _renderOrder()

构造 ORDER 子句


_renderForUpdate() 方法

protected string _renderForUpdate()

构造 FOR UPDATE 子句


_join() 方法

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


_addCols() 方法

protected void _addCols($table_name, $cols)

$table_name string
$cols array|string|QDB_Expr
{return}

添加到内部的数据表->字段名映射数组


_addConditions() 方法

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

添加查询条件的内容方法


_addAggregate() 方法

protected QDB_Select _addAggregate($type, $field, $alias)

$type int
$field string|QDB_Expr
$alias string
{return} QDB_Select

添加一个集合查询


_getCurrentTableName() 方法

protected string _getCurrentTableName()

获得当前表的名称


_parseTableName() 方法

public string _parseTableName($table_name)

$table_name string
{return} string

回调函数,用于分析查询中包含的关联表名称