Query_Builder_Where 类別
Query_Builder_Where 类別处理为查詢建立條件和限制邏輯,
每一種类型的 where 語句(包括 BETWEEN 和 IN 等等……)也在此处理。此类別不是實例化的(它是抽象)
但被分享相同函式的其他类別所擴充,这些类別是:
請注意: 因为被上列类別擴充,回傳的「目前實例」将会是那些其中之一。
where()
where 方法是 and_where 的別名。
and_where($column, $op = null, $value = null)
and_where 方法附加一个 WHERE 語句。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
混合 |
必要 |
行名稱或 array($column, $alias)、物件或回呼(callback) |
$op |
字串 |
null
|
邏輯操作符:=、!=、IN、BETWEEN 和 LIKE。如果沒有提供此将退回到 '=' |
$value |
字串 |
null
|
行值 |
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定第一个 where 語句
$query->where('name', '!=', 'John');
// 然後附加一个新的條件
$query->and_where('surname', 'Doe');
// 透過回呼(callback)巢狀 where
$query->where(function($query){
$query->where('email', 'jim@jim.com')
->or_where('email', 'haha@joke.com');
});
// 結果如下:
// SELECT * FROM `users` WHERE `name` != "John" AND `surname` = "Doe"
// AND (`email` = "jim@jim.com" OR `email` = "haha@joke.com")
|
or_where($column, $op = null, $value = null)
or_where 方法附加一个 OR WHERE 語句。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
字串 |
必要 |
行名稱或 array($column, $alias)、物件或回呼(callback) |
$op |
字串 |
null
|
邏輯操作符:=、!=、IN、BETWEEN。如果沒有提供此将退回到 '=' |
$value |
字串 |
null
|
行值 |
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定第一个 where 語句
$query->where('name', '=', 'John');
// 然後附加一个新的條件
$query->or_where('surname', 'Doe');
// 透過回呼(callback)巢狀 where
$query->or_where(function($query){
$query->where('email', 'jim@jim.com')
->and_where('id', 4);
});
// 結果如下:
// SELECT * FROM `users` WHERE `name` != "John" OR `surname` = "Doe"
// OR (`email` = "jim@jim.com" AND `id` = 4)
|
where_open()
where_open 方法是 and_where_open 的別名。
and_where_open()
and_where_open 方法開啟一个 SQL 閉包(closure)并使用 AND 附加它。
靜態 |
否 |
參数 |
無
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定一个 where 語句
$query->where('name', 'john');
// 開啟一个閉包(closure)
$query->and_where_open();
// SELECT * FROM `users` WHERE `name` = "John" AND (
|
or_where_open()
or_where_open 方法開啟一个 SQL 閉包(closure)并使用 OR 附加它。
靜態 |
否 |
參数 |
無
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定一个 where 語句
$query->where('name', 'john');
// 開啟一个閉包(closure)
$query->or_where_open();
// SELECT * FROM `users` WHERE `name` = "John" OR (
|
where_close()
where_close 方法是 and_where_close 的別名。
and_where_close()
and_where_close 方法開啟一个 SQL 閉包(closure)。
靜態 |
否 |
參数 |
無
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定一个 where 語句
$query->where('email', 'like', '%@example.com');
// 開啟一个閉包(closure)
$query->and_where_open();
// 設定一个 where 語句
$query->where('name', 'John');
$query->or_where('surname', 'Doe');
$query->and_where_close();
// SELECT * FROM `users`
// WHERE `email` LIKE "%example.com" AND (`name` = "John" OR `surname` = "Doe")
|
or_where_close()
or_where_close 方法關閉一个 SQL 閉包(closure)。
靜態 |
否 |
參数 |
無
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定一个 where 語句
$query->where('email', 'like', '%@example.com');
// 開啟一个閉包(closure)
$query->or_where_open();
// 設定一个 where 語句
$query->where('name', 'John');
$query->and_where('surname', 'Doe');
$query->or_where_close();
// SELECT * FROM `users` WHERE `email` LIKE "%example.com" OR (`name` = "John" AND `surname` = "Doe")
|
order_by($column, $direction = NULL)
order_by 方法为結果/执行設定排序。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
字串 |
必要 |
行名稱 |
$direction |
字串 |
null |
可以設定为 'asc' 或 'desc'。 |
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定排序
$query->order_by('name');
$query->order_by('email', 'asc');
$query->order_by('surname', 'desc');
// SELECT * FROM `users` ORDER BY `name`, `email` ASC, `surname DESC
|
limit($number)
limit 方法限制選擇/影響的列数。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$number |
整数 |
必要 |
列数 |
|
回傳 |
回傳目前實例。 |
範例 |
// 預处理一个 select 語句
$query = DB::select('*')->from('users');
// 設定限制
$query->limit(10);
// SELECT * FROM `users` LIMIT 10
|