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"