Query_Builder_Select class
(extends Query_Builder_Where)
The Query_Builder_Select class handles all the select operations for the query building process. It extends the
Query_Builder_Where class, so all the methods are inherited.
distinct($value = true)
The distinct method sets whether to select distinct values.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$value |
bool |
true
|
set to false if you don't want to select distinct values |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select('name')->from('users');
// Set it to distinct
$query->distinct();
// SELECT DISTINCT `name` FROM `users`
|
select($columns = null)
The select method appends columns to select.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$columns |
mixed |
true
|
column name or array($column, $alias) |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select('name')->from('users');
// Append other columns to select
$query->select('surname', 'email');
// Supply an array to use an alias
$query->select(
array('is_active', 'active'),
'birthdate'
);
// SELECT `name`, `surname`, `email`, `is_active` AS `active`, `birthdate` FROM `users`
|
select_array(array $columns, $reset = false)
The select_array method appends columns to select.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$columns |
array |
required |
an array containing column names |
$reset |
bool |
false
|
If true, do not append, but overwrite |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select('name')->from('users');
// Append other columns to select
$query->select('surname', 'email');
// Supply an array to use an alias
$query->select_array(array(
array('is_active', 'active'),
'birthdate'
));
// produces SELECT `name`, `surname`, `email`, `is_active` AS `active`, `birthdate` FROM `users` ...
// Supply an array to use an alias and reset the previous select
$query->select_array(array(
array('surname', 'name'),
'birthdate'
), true);
// produces SELECT `surname` AS `name`, `birthdate` FROM `users` ...
|
from($tables)
The from method appends tables to select from.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$tables |
mixed |
required |
table names or array($table, $alias) |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select()->from('users');
// Append tables to select from
$query->from(
'admins',
array('comments', 'cmmnts')
);
// SELECT * FROM `users`, `admins`, `comments` cmmnts
|
join($table, $type = null)
The join method appends tables to join.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$table |
mixed |
required |
table name or array($table, $alias) |
$type |
mixed |
true
|
join type (LEFT, RIGHT, INNER, etc) |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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)
The on method adds "ON ..." conditions for the last created JOIN statement.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$c1 |
mixed |
required |
table name or array($table, $alias) |
$op |
string |
required |
logical operator |
$c2 |
mixed |
required |
table name or array($table, $alias) |
|
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');
// SELECT * FROM `users` JOIN `profiles` ON `users`.`id` = `profiles`.`user_id`
|
and_on()
The and_on method is an alias for on.
or_ on($c1, $op, $c2)
The on method adds "OR ON ..." conditions for the last created JOIN statement.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$c1 |
mixed |
required |
table name or array($table, $alias) |
$op |
string |
required |
logical operator |
$c2 |
mixed |
required |
table name or array($table, $alias) |
|
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 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`
|
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)
The group_by method creates a "GROUP BY ..." filter.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$columns |
mixed |
required |
table name |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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)
The having method is an alias for and_having.
and_having($column, $op, $value = NULL)
The and_having method appends a "AND HAVING" statement.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$column |
string |
required |
Column name or array($column, $alias), object or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN and LIKE. |
$value |
mixed |
null
|
Column value |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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)
The or_having method appends a "OR HAVING" statement.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$column |
string |
required |
Column name or array($column, $alias), object or callback |
$op |
string |
null
|
Logic operator: =, !=, IN, BETWEEN and LIKE. |
$value |
mixed |
null
|
Column value |
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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()
The having_open method is an alias for and_having_open.
and_having_open()
The and_having_open method opens an SQL closure and appends it using AND.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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()
The or_having_open method opens an SQL closure and appends it using OR.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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()
The having_close method is an alias for and_having_close.
and_having_close()
The and_having_close method closes an SQL closure.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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()
The or_having_close method closes an SQL closure.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$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)
The offset method sets row number to start from when selecting/updating/deleting.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$number |
int |
required |
The row number to start from |
|
Returns |
Returns the current instance |
Example |
// prepare a select statement
$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)
The compile method returns the select SQL query as a string.
Static |
No |
Parameters |
Param |
Type |
Default |
Description |
$db |
object |
required |
A database connection |
|
Returns |
Returns the SQL query as a string. |
Example |
// prepare a select statement
$query = DB::select('*')->from('users');
// Set the limit and offset
$query->limit(10);
$query->offset(5);
// Get the database connection
$connection = Database_Connection::instance();
// Get the sql query
$sql = $query->compile($connection);
|
reset()
The reset method resets all values of the current instance.
Static |
No |
Parameters |
None
|
Returns |
Returns the current instance. |
Example |
// prepare a select statement
$query = DB::select('*')->from('users');
// Set some conditions
$query->where('name', 'bob');
$query->where('surname', 'unknown');
// Reset it
$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"
|