Query_Builder_Select クラス
(Query_Builder_Where の拡張)
Query_Builder_Select クラスは、クエリ構築のための、すべてのSELECT 操作を扱います。
これは、Query_Builder_Where を継承しており、 すべてのメソッドが引き継がれます。
distinct($value = true)
distinct メソッドは、 値を重複なしで取得するかをセットします。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$value |
bool |
true
|
もし値の重複排除を望まないのであれば、false を指定します。 |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('name')->from('users');
// 重複なしを指定します
$query->distinct();
// SELECT DISTINCT `name` FROM `users`
|
select($columns = null)
select メソッドは、取得するカラムを指定します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$columns |
mixed |
true
|
column name or array($column, $alias) |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('name')->from('users');
// 取得する他のカラム名を追加
$query->select('surname', 'email');
// Supply an array to use an alias
$query->select(
array('is_active', 'active'),
'birthdate'
);
// SELECT `surname`, `email`, `is_active` as active, `birthdate` FROM `users`
|
select_array(array $columns)
select_array メソッドは、取得するカラムを追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$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 `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 メソッドは、取得するテーブルを追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$tables |
mixed |
必須 |
table names or 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するテーブルを追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$table |
mixed |
必須 |
table name or array($table, $alias) |
$type |
mixed |
true
|
join type (LEFT, RIGHT, INNER, etc) |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select()->from('users');
// Join a table
$query->join('profiles');
// SELECT * FROM `users` JOIN `profiles`
// or...
$query = DB::select()->from('users');
// Join another table
$query->join('pictures', 'RIGHT OUTER');
// SELECT * FROM `users` RIGHT OUTER JOIN `pictures`
|
on($c1, $op, $c2)
onメソッドは、最後に作られたJOINステートメントに対し、 "ON ..." 条件を追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$c1 |
mixed |
必須 |
table name or array($table, $alias) |
$op |
string |
必須 |
logical operator |
$c2 |
mixed |
必須 |
table name or array($table, $alias) |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select()->from('users');
// Join a table
$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 ..." 条件を追加します。
静的 |
No |
Parameters |
パラメータ |
型 |
デフォルト |
説明 |
$c1 |
mixed |
必須 |
table name or array($table, $alias) |
$op |
string |
必須 |
logical operator |
$c2 |
mixed |
必須 |
table name or array($table, $alias) |
|
Returns |
現在のインスタンス |
Example |
// select 文を準備します
$query = DB::select()->from('users');
// Join a table
$query->join('profiles');
$query->on('users.id', '=', 'profiles.user_id');
// Add an OR ON condition
$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 ..." フィルタを作成します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$columns |
mixed |
必須 |
table name |
|
返り値 |
減座員のインスタンス |
例 |
// select 文を準備します
$query = DB::select()->from('articles');
// Group by '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" 句を追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$column |
string |
必須 |
Column name or array($column, $alias), object or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN and LIKE. |
$value |
mixed |
null
|
Column value |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set the first HAVING statement
$query->having('name', '!=', 'John');
// and append a new condition
$query->and_having('surname', '=', 'Doe');
// create a group using a callback
$query->and_having(function($query){
$query->having('email', 'info@example.com');
$query->or_having('email', 'second@example.com');
});
// Resulting in:
// 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" 句を追加します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$column |
string |
必須 |
Column name or array($column, $alias), object or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN and LIKE. |
$value |
mixed |
null
|
Column value |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set the first HAVING statement
$query->having('name', '!=', 'John');
// and append a new condition
$query->or_having('surname', '=', 'Doe');
// create a group using a callback
$query->or_having(function($query){
$query->having('email', 'info@example.com');
$query->and_having('email', 'second@example.com');
});
// Resulting in:
// 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で追加します。
静的 |
No |
パラメータ |
None
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set a HAVING statement
$query->having('name', '=', 'john')
// Open a closure
$query->and_having_open();
// SELECT * FROM `users` HAVING `name` = "John" AND (
|
or_having_open()
or_having_open メソッドは、SQLクロージャを開始し、それをORで追加します。
静的 |
No |
パラメータ |
None
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set a HAVING statement
$query->having('name', '=', 'john')
// Open a 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クロージャを閉じます。
静的 |
No |
パラメータ |
None
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Open a closure
$query->and_having_open();
// Set a HAVING statement
$query->having('name', '=', 'john');
$query->and_having_close();
// SELECT * FROM `users` HAVING (`name` = "John")
|
or_having_close()
or_having_closeメソッドは、SQL クロージャを閉じます。
静的 |
No |
パラメータ |
None
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set a HAVING statement
$query->having('email', 'like', '%@example.com');
// Open a closure
$query->or_having_open();
// Set a HAVING statement
$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の際に、どの行から開始するかをセットします。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$number |
int |
必須 |
The row number to start from |
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set the limit
$query->limit(10);
$query->offset(5);
// SELECT * FROM `users` LIMIT 10 OFFSET 5
|
compile(\Database_Connection$db)
compile メソッドは、SELECTを行うSQL クエリを文字列で返却します。
静的 |
No |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$db |
object |
必須 |
データベースコネクション |
|
返り値 |
SQL クエリの文字列 |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set the limit and offset
$query->limit(10);
$query->offset(5);
// データベースコネクションを取得
$connection = Database_Connection::instance();
// SQLクエリを取得
$sql = $query->compile($connection);
|
reset()
resetメソッドは、現在のインスタンスのすべての値をリセットします。
静的 |
No |
パラメータ |
None
|
返り値 |
現在のインスタンス |
例 |
// select 文を準備します
$query = DB::select('*')->from('users');
// Set some conditions
$query->where('name', 'bob');
$query->where('surname', 'unknown');
// リセット
$query->reset();
// Set the new values
$query->select('email')->from('admins')->where('role', 'superadmin');
// The SQL query will now be:
// SELECT `email` FROM `admins` WHERE `role` = "superadmins"
|