Query_Builder_Where クラス
Query_Builder_Where クラスは、クエリ構築における条件及び制限を設定するロジックを扱います。
すべての種類の where ステートメント (BETWEEN や IN などを含む) はここで扱います。このクラスは、抽象クラスのためインスタンスは生成できず、同じ機能を共有する他のクラスに継承されます。
それらのクラスは次のとおりです。:
注意: Query_Builder_Where は上記のクラスから継承されるため、"current instance" はそれらの一つが返却されます。
where()
where メソッドはand_whereのエイリアスです。
and_where($column, $op = null, $value = null)
and_where メソッドは、WHERE ステートメントを追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$column |
mixed |
必須 |
Column name or array($column, $alias), object, or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN and LIKE. If none is provided this will fallback to '=' |
$value |
string |
null
|
カラムの値 |
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// 最初の where ステートメントをセット
$query->where('name', '!=', 'John');
// あたらしい条件を追加
$query->and_where('surname', 'Doe');
// ネストした 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 ステートメントを追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$column |
string |
必須 |
Column name or array($column, $alias), object or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN. If none is provided this will fallback to '=' |
$value |
string |
null
|
カラムの値 |
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// 最初の where ステートメントをセット
$query->where('name', '=', 'John');
// あたらしい条件を追加
$query->or_where('surname', 'Doe');
// nested where through callback
$query->or_where(function($query){
$query->where('email', 'jim@jim.com')
->and_where('id', 4);
});
// Resulting in:
// 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 クロージャ を開き、それを AND で追加します。
静的 |
No |
パラメータ |
None
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// where ステートメントをセット
$query->where('name', 'john');
// クロージャを開く
$query->and_where_open();
// SELECT * FROM `users` WHERE `name` = "John" AND (
|
or_where_open()
or_where_open メソッドは SQL クロージャを開き、それを OR で追加します。
静的 |
No |
パラメータ |
None
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// where ステートメントをセット
$query->where('name', 'john');
// クロージャを開く
$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 クロージャを閉じます。
静的 |
No |
パラメータ |
None
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// where ステートメントをセット
$query->where('email', 'like', '%@example.com');
// クロージャを開く
$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 クロージャを閉じます。
静的 |
No |
パラメータ |
None
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// where ステートメントをセット
$query->where('email', 'like', '%@example.com');
// クロージャを開く
$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 メソッドは、結果/実行の順序をセットします。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$column |
string |
必須 |
カラム名 |
$direction |
string |
null |
'asc' もしくは 'desc'が指定可能です。 |
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// order by をセット
$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 メソッドは、 取得/更新する、レコード数の上限をセットします。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$number |
int |
必須 |
The number of rows |
|
返り値 |
Returns the current instance. |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// limit句をセット
$query->limit(10);
// SELECT * FROM `users` LIMIT 10
|