SQL构造核心类
API - Module_Database_QueryBuilder
- Database_QueryBuilder::__construct
- Database_QueryBuilder::compile - 解析为SQL语句
- Database_QueryBuilder::get_builder - 获取Builder配置
- Database_QueryBuilder::set_builder - 设置Builder信息
- Database_QueryBuilder::distinct - 构成查询 SELECT DISTINCT
- Database_QueryBuilder::select - select(c1, c2, c3,......)
- Database_QueryBuilder::select_array - Choose the columns to select from, using an array.
- Database_QueryBuilder::select_max - 查询最大值
- Database_QueryBuilder::select_min - 查询平均值
- Database_QueryBuilder::select_avg - 查询平均值
- Database_QueryBuilder::select_sum - 查询总和
- Database_QueryBuilder::select_adv - 高级查询方式
- Database_QueryBuilder::columns - Set the columns that will be inserted.
- Database_QueryBuilder::values - 加入多条数据
- Database_QueryBuilder::set - 为update,insert设置数据
- Database_QueryBuilder::value - Set the value of a single column.
- Database_QueryBuilder::value_increment - 数据递增
- Database_QueryBuilder::value_decrement - 数据递减
- Database_QueryBuilder::table - Sets the table to update.
- Database_QueryBuilder::from - from(tableA,tableB,...)
- Database_QueryBuilder::join - Adds addition tables to "JOIN ...".
- Database_QueryBuilder::on - Adds "ON ..." conditions for the last created JOIN statement.
- Database_QueryBuilder::group_by - group_by(c1,c2,c3,.....)
- Database_QueryBuilder::having - Alias of and_having()
- Database_QueryBuilder::and_having - Creates a new "AND HAVING" condition for the query.
- Database_QueryBuilder::or_having - Creates a new "OR HAVING" condition for the query.
- Database_QueryBuilder::having_open - Alias of and_having_open()
- Database_QueryBuilder::and_having_open - Opens a new "AND HAVING (...)" grouping.
- Database_QueryBuilder::or_having_open - Opens a new "OR HAVING (...)" grouping.
- Database_QueryBuilder::having_close - Closes an open "AND HAVING (...)" grouping.
- Database_QueryBuilder::and_having_close - Closes an open "AND HAVING (...)" grouping.
- Database_QueryBuilder::or_having_close - Closes an open "OR HAVING (...)" grouping.
- Database_QueryBuilder::offset - Start returning results after "OFFSET ..."
- Database_QueryBuilder::reset - 重设数据
- Database_QueryBuilder::in
- Database_QueryBuilder::notin
- Database_QueryBuilder::where - Alias of and_where()
- Database_QueryBuilder::and_where - Creates a new "AND WHERE" condition for the query.
- Database_QueryBuilder::or_where - Creates a new "OR WHERE" condition for the query.
- Database_QueryBuilder::where_open - Alias of and_where_open()
- Database_QueryBuilder::and_where_open - Opens a new "AND WHERE (...)" grouping.
- Database_QueryBuilder::or_where_open - Opens a new "OR WHERE (...)" grouping.
- Database_QueryBuilder::where_close - Closes an open "AND WHERE (...)" grouping.
- Database_QueryBuilder::and_where_close - Closes an open "AND WHERE (...)" grouping.
- Database_QueryBuilder::or_where_close - Closes an open "OR WHERE (...)" grouping.
- Database_QueryBuilder::order_by - Applies sorting with "ORDER BY ..."
- Database_QueryBuilder::limit - Return up to "LIMIT ..." results
- Database_QueryBuilder::like - 返回 "LIKE ..."
- Database_QueryBuilder::or_like - 返回 "OR LIKE ..."
- Database_QueryBuilder::mod - 返回 "$column MOD $mod = $value"
- Database_QueryBuilder::or_mod - 返回 "OR $column MOD $mod = $value"
- Database_QueryBuilder::use_index - 使用指定索引
- Database_QueryBuilder::force_index - 强制使用指定索引
- Database_QueryBuilder::ignore_index - 或略指定索引
- Database_QueryBuilder::recovery_last_builder - 恢复最后查询或reset时的Builder数据
- Database_QueryBuilder::expr_value - 创建一个不会被过滤处理的字符串
解析为SQL语句
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$db |
object |
Database instance |
string
获取Builder配置
可用 $builder = & $obj->get_builder(); 获取到内存指针
array
设置Builder信息
// 设置一样的builder
$db->from('mytable')->where('id>', 10)->limit(10)->order_by('id', 'DESC');
// 获取当前builder
$builder = $db->get_builder();
// 执行查询
$data1 = $db->where('type', 1)->get()->as_array();
echo $db->last_query(); //SELECT * FROM `mytable` WHERE `id` > 10 AND `type` = '1' ORDER BY `id` DESC LIMIT 10
// 将前面获取的builder重新设置回去
$db->set_builder($builder);
// 再次执行另外一个附加条件的查询
$data2 = $db->where('type', 3)->get()->as_array();
echo $db->last_query(); //SELECT * FROM `mytable` WHERE `id` > 10 AND `type` = '3' ORDER BY `id` DESC LIMIT 10
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$builder |
array |
Builder信息数组,不必完整的,建议通过get_builder()获取后设置 |
Database
构成查询 SELECT DISTINCT
如果传的是字符串则构造出 SELECT DISTINCT(test
) as test
这样的查询(MySQL)
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$value |
boolean |
Enable or disable distinct columns | bool true |
Database
select(c1, c2, c3,......)
如果查询是SELECT * 则不需要设置,系统会自动处理
$db->select('id', 'username')->from('members')->get()->as_array();
echo $db->last_query(); //SELECT `id`, `username` FROM `members`;
$db->select('db1.id', 'db2.username')->from('members as db1')->join('mydb as db2')->on('db1.id', 'db2.mid')->get()->as_array();
echo $db->last_query(); //SELECT `db1`.`id`, `db2`.`username` FROM `members` AS `db1` JOIN ON `db1`.`id` = `db2`.`mid`;
// 使用Database::expr_value()方法可以传入一个不被解析的字符串
$db->select(Database::expr_value('SUM("id") as `id`'))->from('members')->get()->as_array();
echo $db->last_query(); //SELECT SUM("id") as `id` FROM `members`;
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$columns |
mixed |
Column name or array($column, $alias) or object |
Database
Choose the columns to select from, using an array.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$columns |
array |
List of column names or aliases |
Database
查询最大值
$db->select_max('test')->from('db')->group_by('class_id')->get()->as_array();
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$conlumn |
string |
$conlumn |
Database
查询平均值
$db->select_min('test')->from('db')->group_by('class_id')->get()->as_array();
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$conlumn |
string |
$conlumn |
Database
查询平均值
$db->select_avg('test')->from('db')->group_by('class_id')->get()->as_array();
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$conlumn |
string |
$conlumn |
Database
查询总和
$db->select_sum('test')->from('db')->group_by('class_id')->get()->as_array();
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$conlumn |
string |
$conlumn |
Database
高级查询方式
需要相应接口支持, 目前支持MongoDB的aggregation框架Group查询:$sum,$max,$min,$avg,$last,$first等,详情见 http://docs.mongodb.org/manual/reference/aggregation/group/ MySQL支持sum,max,min,svg等
$db->select_adv('test','max'); //查询最大值 $db->seleve_adv('test','sum',3); //查询+3的总和
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$conlumn |
string |
$conlumn | |
$type |
string |
$opt | |
$opt1 |
unknown |
null | |
$opt2 |
unknown |
null |
Database
Set the columns that will be inserted.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$columns |
array |
Column names |
Database
加入多条数据
// 例1
$v1 = array('k1'=>1,'k2'=>1);
$v2 = array('k1'=>2,'k2'=>1);
$v3 = array('k1'=>3,'k2'=>1);
$db->values($v1,$v2,$v3); //加入3行数据
// 例2
$values = array();
$values[] = array('k1'=>1,'k2'=>1);
$values[] = array('k1'=>2,'k2'=>1);
$values[] = array('k1'=>3,'k2'=>1);
$db->values($values); //加入3行数据,等同上面的效果
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$values |
array |
Values list |
Database
为update,insert设置数据
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$pairs |
array |
Associative (column => value) list |
Database
Set the value of a single column.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Table name or array($table, $alias) or object | |
$value |
mixed |
Column value | |
$op |
string |
=|+|- | string(1) "=" |
Database
数据递增
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$value |
int |
$value |
Database
数据递减
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$value |
int |
$value |
Database
Sets the table to update.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$table |
mixed |
Table name or array($table, $alias) or object |
Database
from(tableA,tableB,...)
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$tables |
mixed |
Table name or array($table, $alias) or object |
Database
Adds addition tables to "JOIN ...".
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$table |
mixed |
Column name or array($column, $alias) or object | |
$type |
string |
Join type (LEFT, RIGHT, INNER, etc) | null |
Database
Adds "ON ..." conditions for the last created JOIN statement.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$c1 |
mixed |
Column name or array($column, $alias) or object | |
$c2 |
string |
Logic operator | |
$op |
mixed |
Column name or array($column, $alias) or object | string(1) "=" |
Database
group_by(c1,c2,c3,.....)
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$columns |
mixed |
Column name or array($column, $alias) or object |
Database
Alias of and_having()
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database
Creates a new "AND HAVING" condition for the query.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database
Creates a new "OR HAVING" condition for the query.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database
Alias of and_having_open()
Database
Opens a new "AND HAVING (...)" grouping.
Database
Opens a new "OR HAVING (...)" grouping.
Database
Closes an open "AND HAVING (...)" grouping.
Database
Closes an open "AND HAVING (...)" grouping.
Database
Closes an open "OR HAVING (...)" grouping.
Database
Start returning results after "OFFSET ..."
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$number |
integer |
Starting result number |
Database
重设数据
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$key |
$key |
不传则全部清除,可选参数 select,select_adv,from,join,where,group_by,having,parameters,set,columns,values,where,index,order_by,distinct,limit,offset,table,last_join,join,on | null |
Database
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$key | |
$value |
array |
$value | |
$no_in |
unknown |
bool false |
Database
Alias of and_where()
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | null |
$op |
mixed |
Column value | string(1) "=" |
Database
Creates a new "AND WHERE" condition for the query.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | |
$op |
mixed |
Column value | string(1) "=" |
Database
Creates a new "OR WHERE" condition for the query.
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$value |
string |
Logic operator | |
$op |
mixed |
Column value | string(1) "=" |
Database
Alias of and_where_open()
Database
Opens a new "AND WHERE (...)" grouping.
Database
Opens a new "OR WHERE (...)" grouping.
Database
Closes an open "AND WHERE (...)" grouping.
Database
Closes an open "AND WHERE (...)" grouping.
Database
Closes an open "OR WHERE (...)" grouping.
Database
Applies sorting with "ORDER BY ..."
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
mixed |
Column name or array($column, $alias) or object | |
$direction |
string |
Direction of sorting | string(3) "ASC" |
Database
Return up to "LIMIT ..." results
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$number |
integer |
Maximum results to return | |
$offset |
integer |
Maximum results from offset | null |
Database
返回 "LIKE ..."
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$value |
string |
$value | null |
Database
返回 "OR LIKE ..."
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$value |
string |
$value | null |
Database
返回 "$column MOD $mod = $value"
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$mod_dig |
int |
$mod_dig | |
$value |
int |
$value |
Database
返回 "OR $column MOD $mod = $value"
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$column |
string |
$column | |
$mod_dig |
int |
$mod_dig | |
$value |
int |
$value | |
$op |
unknown |
string(1) "=" |
Database
使用指定索引
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$index |
string |
Database
强制使用指定索引
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$index |
string |
Database
或略指定索引
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$index |
string |
Database
恢复最后查询或reset时的Builder数据
此方法等同于在执行查询前先获取 $builder = $db->get_builder();
然后执行SQL完毕后把原先的builder重新设置 $db->set_builder($builder);
$db->from('mydb')->where('id', 1)->get()->as_array(); // 执行查询
$db->recovery_last_builder(); // 恢复
等同于下面代码,但明显上面代码更优雅
$db->from('mydb')->where('id', 1);
$builder = $db->get_builder(); // 在执行前获取builder设置
$db->get()->as_array(); // 执行查询
$db->set_builder($builder); // 将前面获取的builder重新复原
例子一
$count = $db->from('mydb')->where('id', 10, '>')->count_records();
// 在执行count_records()时,所有的builder数据将会被清空
echo $db->last_query(); // SELECT COUNT(1) AS `total_row_count` FROM `mydb` WHERE `id` > '10'
// 恢复builder
$db->recovery_last_builder();
$db->limit(20)->order_by('id', 'DESC')->get()->as_array();
echo $db->last_query(); // SELECT * FROM `mydb` WHERE `id` > '10' ORDER BY `id` DESC LIMIT 10
Database
创建一个不会被过滤处理的字符串
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$string |
string |
Expression |
Database_Expression