Query_Builder_Select クラス
(Query_Builder_Where の拡張)
Query_Builder_Select クラスは、クエリ構築のための、すべての SELECT 操作を扱います。
これは、 Query_Builder_Where クラスを継承しており、 すべてのメソッドが引き継がれます。
distinct($value = true)
distinct メソッドは、 値を重複なしで取得するかをセットします。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$value |
bool |
true
|
もし値の重複排除を望まないのであれば、 false を指定します。 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('name')->from('users');
// 重複なしを指定します
$query->distinct();
// SELECT DISTINCT `name` FROM `users`
|
select($columns = null)
select メソッドは、取得するカラムを指定します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$columns |
mixed |
true
|
カラム名か、 array($column, $alias) |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('name')->from('users');
// 取得する他のカラム名を追加
$query->select('surname', 'email');
// エイリアスを使用する配列を指定
$query->select(
array('is_active', 'active'),
'birthdate'
);
// SELECT `name`, `surname`, `email`, `is_active` AS `active`, `birthdate` FROM `users`
|
select_array(array $columns, $reset = false)
select_array メソッドは、取得するカラムを追加します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$columns |
array |
必須 |
カラム名の配列 |
$reset |
bool |
false
|
true を指定した場合は追加ではなく上書きします。 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('name')->from('users');
// 取得したい別のカラムを追加します。
$query->select('surname', 'email');
// カラムの別名を使いたい場合は、配列を指定します。
$query->select_array(array(
array('is_active', 'active'),
'birthdate'
));
// produces SELECT `name`, `surname`, `email`, `is_active` AS `active`, `birthdate` FROM `users` ...
// カラムの別名を使用し、前回の SELECT で使用したカラムをリセット (上書き) します。
$query->select_array(array(
array('surname', 'name'),
'birthdate'
), true);
// produces SELECT `surname` AS `name`, `birthdate` FROM `users` ...
|
from($tables)
from メソッドは、取得するテーブルを追加します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$tables |
mixed |
必須 |
テーブル名か、 array($table, $alias) |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select()->from('users');
// 取得するテーブルを指定
$query->from(
'admins',
array('comments', 'cmmnts')
);
// SELECT * FROM `users`, `admins`, `comments` cmmnts
|
join($table, $type = null)
join メソッドは、 JOIN するテーブルを追加します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$table |
mixed |
必須 |
テーブル名か、 array($table, $alias) |
$type |
mixed |
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 |
mixed |
必須 |
テーブル名か、 array($table, $alias) |
$op |
string |
必須 |
論理演算子 |
$c2 |
mixed |
必須 |
テーブル名か、 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)
or_on メソッドは、最後に作られた JOIN ステートメントに対し、 "OR ON ..." 条件を追加します。
静的 |
いいえ |
Parameters |
パラメータ |
型 |
デフォルト |
説明 |
$c1 |
mixed |
必須 |
テーブル名か、 array($table, $alias) |
$op |
string |
必須 |
論理演算子 |
$c2 |
mixed |
必須 |
テーブル名か、 array($table, $alias) |
|
Returns |
現在のインスタンスを返します。 |
Example |
// 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`
|
on_open()
The on_open method adds an open bracket for the last created JOIN statement.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
See below
|
on_close()
The on_close method adds an closing bracket for the last created JOIN statement.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select()->from('users');
// Join a table
$query->join('profiles');
$query->on('users.id', '=', 'profiles.user_id');
// Add some nested conditions
$query->on_open()
->on('profiles.status', '=', DB::expr('A')
->or_on('profiles.status', '=', DB::expr('B')
->on_close();
// SELECT * FROM `users` JOIN `profiles` ON `users`.`id` = `profiles`.`user_id`
// AND (`profiles`.`status` = "A" OR `profiles`.`status` = "B"))
|
and_on()
The and_on method is an alias for on.
group_by($columns)
group_by メソッドは、 "GROUP BY ..." フィルタを作成します。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$columns |
mixed |
必須 |
テーブル名 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select()->from('articles');
<<<<<<< HEAD
// 'genre' でグループ化
$query->group_by('genre', 'category');
=======
// Group by 'genre'
$query->group_by('genre', 'category');
>>>>>>> 1.8/master
// 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 |
string |
必須 |
カラム名か、 array($column, $alias) 、オブジェクト、もしくはコールバック |
$op |
string |
null
|
論理演算子: =, !=, IN, BETWEEN そして LIKE. |
$value |
mixed |
null
|
カラム名 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// 最初の HAVING 句を設定
$query->having('name', '!=', 'John');
// そして、新しい条件を追加
$query->and_having('surname', '=', 'Doe');
// コールバックを利用しグループを作成
$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 |
string |
必須 |
カラム名か、 array($column, $alias) 、オブジェクト、もしくはコールバック |
$op |
string |
null
|
論理演算子: =, !=, IN, BETWEEN そして LIKE. |
$value |
mixed |
null
|
カラム名 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// 最初の HAVING 句を設定
$query->having('name', '!=', 'John');
// そして、新しい条件を追加
$query->or_having('surname', '=', 'Doe');
// コールバックを利用しグループを作成
$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 クロージャを開始し、それを AND で追加します。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// HAVING 句を設定
$query->having('name', '=', 'john')
// クロージャを開く
$query->and_having_open();
// SELECT * FROM `users` HAVING `name` = "John" AND (
|
or_having_open()
or_having_open メソッドは、 SQL クロージャを開始し、それを OR で追加します。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// HAVING 句を設定
$query->having('name', '=', 'john')
// クロージャを開く
$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 クロージャを閉じます。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// クロージャを開く
$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 クロージャを閉じます。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
現在のインスタンスを返します。 |
例 |
// select 文を準備
$query = DB::select('*')->from('users');
// HAVING 句を設定
$query->having('email', 'like', '%@example.com');
// クロージャを開く
$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 メソッドは SELECT/UPDATE/DELETE の際に、どの行から開始するかをセットします。
静的 |
いいえ |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$number |
int |
必須 |
開始する行番号 |
|
返り値 |
現在のインスタンスを返します。 |
例 |
// 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 |
object |
必須 |
データベースコネクション |
|
返り値 |
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"
|