Query_Builder_Select 类別

(擴充 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"