当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Query Builder Select - 类別

优质
小牛编辑
119浏览
2023-12-01

(扩充 Query_Builder_Where

Query_Builder_Select 类别为查询建立程序处理所有 select 操作,它扩充 Query_Builder_Where 类别,所以所有方法都继承。

distinct($value = true)

distinct 方法设定是否选择相异值。

静态
参数
参数类型预设描述
$value布林
true
设定为 false 如果你不想要选择相异值
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('name')->from('users');

// 设定为相异
$query->distinct();

// SELECT DISTINCT `name` FROM `users`

select($columns = null)

select 方法附加行到 select。

静态
参数
参数类型预设描述
$columns混合
true
行名称或 array($column, $alias)
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('name')->from('users');

// 附加其他的行到 select
$query->select('surname', 'email');

// 提供阵列以使用别名
$query->select(
	array('is_active', 'active'),
	'birthdate'
);

// SELECT `surname`, `email`, `is_active` as active, `birthdate` FROM `users`

select_array(array $columns, $reset = false)

select_array 方法附加行到 select。

静态
参数
参数类型预设描述
$columns阵列必要包含行名称的阵列
$reset布林
false
如果为 true,不附加,但覆写
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('name')->from('users');

// 附加其他的行到 select
$query->select('surname', 'email');

// 提供阵列以使用别名
$query->select_array(array(
	array('is_active', 'active'),
	'birthdate'
));

// 产生 SELECT `surname`, `email`, `is_active` as active, `birthdate` FROM `users ...

// 提供一个阵列来使用别名且重置前一个 select
$query->select_array(array(
	array('surname', 'name'),
	'birthdate'
), true);

// 产生 SELECT `surname` as name, `birthdate` FROM `users ...

from($tables)

from 附加资料表到 select from。

静态
参数
参数类型预设描述
$tables混合必要资料表名称或 array($table, $alias)
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select()->from('users');

// 附加资料表到 select from
$query->from(
	'admins',
	array('comments', 'cmmnts')
);

// SELECT * FROM `users`, `admins`, `comments` cmmnts

join($table, $type = null)

join 方法附加要组合的资料表。

静态
参数
参数类型预设描述
$table混合必要资料表名称或 array($table, $alias)
$type混合
true
组合类型(LEFT、RIGHT、INNER、等等)
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select()->from('users');

// 组合一张资料表
$query->join('profiles');

// SELECT * FROM `users` JOIN `profiles`

// 或……

$query = DB::select()->from('users');

// 组合另一张资料表
$query->join('pictures', 'RIGHT OUTER');

// SELECT * FROM `users` RIGHT OUTER JOIN `pictures`

on($c1, $op, $c2)

on 方法为最后建立的 JOIN 语句添加 "ON ..." 条件。

静态
参数
参数类型预设描述
$c1混合必要资料表名称或 array($table, $alias)
$op字串必要逻辑运算子
$c2混合必要资料表名称或 array($table, $alias)
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select()->from('users');

// 组合一张资料表
$query->join('profiles');
$query->on('users.id', '=', 'profiles.user_id');

// SELECT * FROM `users` JOIN `profiles` ON `users`.`id` = `profiles`.`user_id`

and_on()

and_on 方法是 on 的别名。

or_ on($c1, $op, $c2)

on 方法为最后建立的 JOIN 语句添加 "OR ON ..." 条件。

静态
参数
参数类型预设描述
$c1混合必要资料表名称或 array($table, $alias)
$op字串必要逻辑操作符
$c2混合必要资料表名称或 array($table, $alias)
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select()->from('users');

// 组合一张资料表
$query->join('profiles');
$query->on('users.id', '=', 'profiles.user_id');

// 添加一个 OR ON 条件
$query->or_on('users.id', '=', 'profiles.other_id');

// SELECT * FROM `users` JOIN `profiles` ON `users`.`id` = `profiles`.`user_id` OR `users`.`id` = `profiles`.`other_id`

group_by($columns)

group_by 方法建立一个 "GROUP BY ..." 过滤器。

静态
参数
参数类型预设描述
$columns混合必要资料表名称
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select()->from('articles');

// 藉由 'genre' 群组
$query->group_by('genre', 'category');

// SELECT * FROM `articles` GROUP BY `genre`, `category`

having($column, $op, $value = NULL)

having 方法是 and_having 的别名。

and_having($column, $op, $value = NULL)

and_having 方法附加一个 "AND HAVING" 语句。

静态
参数
参数类型预设描述
$column字串必要行名称或 array($column, $alias)、物件或回呼(callback)
$op字串
null
逻辑运算子:=、!=、IN、BETWEEN 和 LIKE。
$value混合
null
行值
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定第一个 HAVING 语句
$query->having('name', '!=', 'John');

// 然后附加一个新的条件
$query->and_having('surname', '=', 'Doe');

// 使用回呼(callback)建立一个群组
$query->and_having(function($query){
	$query->having('email', 'info@example.com');
	$query->or_having('email', 'second@example.com');
});

// 结果如下:
// SELECT * FROM `users` HAVING `name` != "John" AND `surname` = "Doe"
// AND (`email` = "info@example.com" OR `email` = "second@example.com")

or_having($column, $op, $value = NULL)

or_having 方法附加一个 "OR HAVING" 语句。

静态
参数
参数类型预设描述
$column字串required行名称或 array($column, $alias)、物件或回呼(callback)
$op字串
null
逻辑运算子:=、!=、IN、BETWEEN 和 LIKE。
$value混合
null
行值
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定第一个 HAVING 语句
$query->having('name', '!=', 'John');

// 然后附加一个新的条件
$query->or_having('surname', '=', 'Doe');

// 使用回呼(callback)建立一个群组
$query->or_having(function($query){
	$query->having('email', 'info@example.com');
	$query->and_having('email', 'second@example.com');
});

// 结果如下:
// SELECT * FROM `users` HAVING `name` != "John" OR `surname` = "Doe"
// OR (`email` = "info@example.com" AND `email` = "second@example.com")

and_having_open()

and_having_open 方法开启一个 SQL 闭包(closure)并使用 AND 附加它。

静态
参数
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定一个 HAVING 语句
$query->having('name', '=', 'john')

// 开启一个闭包(closure)
$query->and_having_open();

// SELECT * FROM `users` HAVING `name` = "John" AND (

or_having_open()

or_having_open 方法开启一个 SQL 闭包(closure)并使用 OR 附加它。

静态
参数
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定一个 HAVING 语句
$query->having('name', '=', 'john')

// 开启一个闭包(closure)
$query->or_having_open();

// SELECT * FROM `users` HAVING `name` = "John" OR (

and_having_close()

and_having_close 方法关闭一个 SQL 闭包(closure)。

静态
参数
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 开启一个闭包(closure)
$query->and_having_open();

// 设定一个 HAVING 语句
$query->having('name', '=', 'john');

$query->and_having_close();
// SELECT * FROM `users` HAVING (`name` = "John")

or_having_close()

or_having_close 方法关闭一个 SQL 闭包(closure)。

静态
参数
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定一个 HAVING 语句
$query->having('email', 'like', '%@example.com');

// 开启一个闭包(closure)
$query->or_having_open();

// 设定一个 HAVING 语句
$query->having('name', '=' 'John');
$query->and_having('surname', '=', 'Doe');

$query->or_having_close();
// SELECT * FROM `users` HAVING `email` LIKE "%example.com" OR (`name` = "John" AND `surname` = "Doe")

offset($number)

offset 方法设定当选择/更新/删除时要开始的列数。

静态
参数
参数类型预设描述
$number整数必要要开始的列数
回传回传目前实例
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定限制
$query->limit(10);

$query->offset(5);

// SELECT * FROM `users` LIMIT 10 OFFSET 5

compile(\Database_Connection$db)

compile 方法回传 select SQL 查询做为一个字串。

静态
参数
参数类型预设描述
$db物件必要一个资料库连线
回传回传 SQL 查询做为一个字串。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定限制和偏移
$query->limit(10);
$query->offset(5);

// 取得资料库连线
$connection = Database_Connection::instance();

// 取得 SQL 查询
$sql = $query->compile($connection);

reset()

reset 方法重置目前实例的所有值。

静态
参数
回传回传目前实例。
範例
// 预处理一个 select 语句
$query = DB::select('*')->from('users');

// 设定一些条件
$query->where('name', 'bob');
$query->where('surname', 'unknown');

// 重置它
$query->reset();

// 设定新的条件
$query->select('email')->from('admins')->where('role', 'superadmin');

// SQL 查询现在会是:
// SELECT `email` FROM `admins` WHERE `role` = "superadmins"