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"