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")
|
having_open()
having_open 方法是 and_having_open 的別名。
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 (
|
having_close()
having_close 方法是 and_having_close 的別名。
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"
|