Db/Select.php
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Db
- Subpackage
- Select
- Version
- $Id$
\Zend_Db_Select
- Children
- \Zend_Db_Table_Select
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
Constants
Properties
array $_joinTypes = array(self::INNER_JOIN, self::LEFT_JOIN, self::RIGHT_JOIN, self::FULL_JOIN, self::CROSS_JOIN, self::NATURAL_JOIN)
array(self::INNER_JOIN, self::LEFT_JOIN, self::RIGHT_JOIN, self::FULL_JOIN, self::CROSS_JOIN, self::NATURAL_JOIN)
Details- Type
- array
array $_parts = array()
array()
Details- Type
- array
array $_partsInit = array(self::DISTINCT => false, self::COLUMNS => array(), self::UNION => array(), self::FROM => array(), self::WHERE => array(), self::GROUP => array(), self::HAVING => array(), self::ORDER => array(), self::LIMIT_COUNT => null, self::LIMIT_OFFSET => null, self::FOR_UPDATE => false)
array(self::DISTINCT => false, self::COLUMNS => array(), self::UNION => array(), self::FROM => array(), self::WHERE => array(), self::GROUP => array(), self::HAVING => array(), self::ORDER => array(), self::LIMIT_COUNT => null, self::LIMIT_OFFSET => null, self::FOR_UPDATE => false)
Details- Type
- array
array $_tableCols = array()
array()
Details- Type
- array
Methods
__call(string $method, array $args) : \Zend_Db_Select
Turn magic function calls into non-magic function calls for joinUsing syntax
Name | Type | Description |
---|---|---|
$method | string | |
$args | array | OPTIONAL Zend_Db_Table_Select query modifier |
Type | Description |
---|---|
\Zend_Db_Select |
Exception | Description |
---|---|
\Zend_Db_Select_Exception | If an invalid method is called. |
__construct(\Zend_Db_Adapter_Abstract $adapter) : void
Class constructor
Name | Type | Description |
---|---|---|
$adapter | \Zend_Db_Adapter_Abstract |
__toString() : string
Implements magic method.
Type | Description |
---|---|
string | This object as a SELECT string. |
_getQuotedSchema(string $schema = null) : string | null
Return a quoted schema name
Name | Type | Description |
---|---|---|
$schema | string | The schema name OPTIONAL |
Type | Description |
---|---|
string | null |
_getQuotedTable(string $tableName, string $correlationName = null) : string
Return a quoted table name
Name | Type | Description |
---|---|---|
$tableName | string | The table name |
$correlationName | string | The correlation name OPTIONAL |
Type | Description |
---|---|
string |
_join(null | string $type, array | string | \Zend_Db_Expr $name, string $cond, array | string $cols, string $schema = null) : \Zend_Db_Select
Populate the {@link $_parts} 'join' key
Name | Type | Description |
---|---|---|
$type | null | string | Type of join; inner, left, and null are currently supported |
$name | array | string | \Zend_Db_Expr | Table name |
$cond | string | Join on this condition |
$cols | array | string | The columns to select from the joined table |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object |
Exception | Description |
---|---|
\Zend_Db_Select_Exception |
_joinUsing( $type, $name, $cond, $cols = '*', $schema = null) : \Zend_Db_Select
Handle JOIN.
$select = $db->select()->from('table1')
->joinUsing('table2', 'column1');
// SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2
These joins are called by the developer simply by adding 'Using' to the
method name. E.g.
* joinUsing
* joinInnerUsing
* joinFullUsing
* joinRightUsing
* joinLeftUsingName | Type | Description |
---|---|---|
$type | ||
$name | ||
$cond | ||
$cols | ||
$schema |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
_renderColumns(string $sql) : string | null
Render DISTINCT clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string | null |
_renderDistinct(string $sql) : string
Render DISTINCT clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderForupdate(string $sql) : string
Render FOR UPDATE clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderFrom(string $sql) : string
Render FROM clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderGroup(string $sql) : string
Render GROUP clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderHaving(string $sql) : string
Render HAVING clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderLimitoffset(string $sql) : string
Render LIMIT OFFSET clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderOrder(string $sql) : string
Render ORDER clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderUnion(string $sql) : string
Render UNION query
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_renderWhere(string $sql) : string
Render WHERE clause
Name | Type | Description |
---|---|---|
$sql | string | SQL query |
Type | Description |
---|---|
string |
_tableCols( $correlationName, array | string $cols, $afterCorrelationName = null) : void
Adds to the internal table-to-column mapping array.
Name | Type | Description |
---|---|---|
$correlationName | ||
$cols | array | string | The list of columns; preferably as an array, but possibly as a string containing one column. |
$afterCorrelationName |
_uniqueCorrelation(string | array $name) : string
Generate a unique correlation name
Name | Type | Description |
---|---|---|
$name | string | array | A qualified identifier. |
Type | Description |
---|---|
string | A unique correlation name. |
_where(string $condition, mixed $value = null, string $type = null, boolean $bool = true) : string
Internal function for creating the where clause
Name | Type | Description |
---|---|---|
$condition | string | |
$value | mixed | optional |
$type | string | optional |
$bool | boolean | true = AND, false = OR |
Type | Description |
---|---|
string | clause |
assemble() : string | null
Converts this object to an SQL SELECT string.
Type | Description |
---|---|
string | null | This object as a SELECT string. (or null if a string cannot be produced.) |
bind(mixed $bind) : \Zend_Db_Select
Set bind variables
Name | Type | Description |
---|---|---|
$bind | mixed |
Type | Description |
---|---|
\Zend_Db_Select |
columns(array | string | \Zend_Db_Expr $cols = '*', string $correlationName = null) : \Zend_Db_Select
Specifies the columns used in the FROM clause.
Name | Type | Description |
---|---|---|
$cols | array | string | \Zend_Db_Expr | The columns to select from this table. |
$correlationName | string | Correlation name of target table. OPTIONAL |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
distinct(bool $flag = true) : \Zend_Db_Select
Makes the query SELECT DISTINCT.
Name | Type | Description |
---|---|---|
$flag | bool | Whether or not the SELECT is DISTINCT (default true). |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
forUpdate(bool $flag = true) : \Zend_Db_Select
Makes the query SELECT FOR UPDATE.
Name | Type | Description |
---|---|---|
$flag | bool | Whether or not the SELECT is FOR UPDATE (default true). |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
from(array | string | \Zend_Db_Expr $name, array | string | \Zend_Db_Expr $cols = '*', string $schema = null) : \Zend_Db_Select
Adds a FROM table and optional columns to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name or an associative array relating correlation name to table name. |
$cols | array | string | \Zend_Db_Expr | The columns to select from this table. |
$schema | string | The schema name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
getAdapter() : \Zend_Db_Adapter_Abstract
Gets the Zend_Db_Adapter_Abstract for this particular Zend_Db_Select object.
Type | Description |
---|---|
\Zend_Db_Adapter_Abstract |
getPart(string $part) : mixed
Get part of the structured information for the current query.
Name | Type | Description |
---|---|---|
$part | string |
Type | Description |
---|---|
mixed |
Exception | Description |
---|---|
\Zend_Db_Select_Exception |
group(array | string $spec) : \Zend_Db_Select
Adds grouping to the query.
Name | Type | Description |
---|---|---|
$spec | array | string | The column(s) to group by. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
having(string $cond, mixed $value = null, int $type = null) : \Zend_Db_Select
Adds a HAVING condition to the query by AND.
Name | Type | Description |
---|---|---|
$cond | string | The HAVING condition. |
$value | mixed | OPTIONAL The value to quote into the condition. |
$type | int | OPTIONAL The type of the given value |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
join(array | string | \Zend_Db_Expr $name, string $cond, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Adds a JOIN table and columns to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cond | string | Join on this condition. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinCross(array | string | \Zend_Db_Expr $name, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add a CROSS JOIN table and colums to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinFull(array | string | \Zend_Db_Expr $name, string $cond, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add a FULL OUTER JOIN table and colums to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cond | string | Join on this condition. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinInner(array | string | \Zend_Db_Expr $name, string $cond, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add an INNER JOIN table and colums to the query Rows in both tables are matched according to the expression in the $cond argument. The result set is comprised of all cases where rows from the left table match rows from the right table.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cond | string | Join on this condition. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinLeft(array | string | \Zend_Db_Expr $name, string $cond, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add a LEFT OUTER JOIN table and colums to the query All rows from the left operand table are included, matching rows from the right operand table included, and the columns from the right operand table are filled with NULLs if no row exists matching the left table.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cond | string | Join on this condition. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinNatural(array | string | \Zend_Db_Expr $name, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add a NATURAL JOIN table and colums to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
joinRight(array | string | \Zend_Db_Expr $name, string $cond, array | string $cols = self::SQL_WILDCARD, string $schema = null) : \Zend_Db_Select
Add a RIGHT OUTER JOIN table and colums to the query.
Name | Type | Description |
---|---|---|
$name | array | string | \Zend_Db_Expr | The table name. |
$cond | string | Join on this condition. |
$cols | array | string | The columns to select from the joined table. |
$schema | string | The database name to specify, if any. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
limit(int $count = null, int $offset = null) : \Zend_Db_Select
Sets a limit count and offset to the query.
Name | Type | Description |
---|---|---|
$count | int | OPTIONAL The number of rows to return. |
$offset | int | OPTIONAL Start returning after this many rows. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
limitPage(int $page, int $rowCount) : \Zend_Db_Select
Sets the limit and count by page number.
Name | Type | Description |
---|---|---|
$page | int | Limit results to this page number. |
$rowCount | int | Use this many rows per page. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
orHaving(string $cond, mixed $value = null, int $type = null) : \Zend_Db_Select
Adds a HAVING condition to the query by OR.
Name | Type | Description |
---|---|---|
$cond | string | The HAVING condition. |
$value | mixed | OPTIONAL The value to quote into the condition. |
$type | int | OPTIONAL The type of the given value |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
orWhere(string $cond, mixed $value = null, int $type = null) : \Zend_Db_Select
Adds a WHERE condition to the query by OR.
Name | Type | Description |
---|---|---|
$cond | string | The WHERE condition. |
$value | mixed | OPTIONAL The value to quote into the condition. |
$type | int | OPTIONAL The type of the given value |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
order(mixed $spec) : \Zend_Db_Select
Adds a row order to the query.
Name | Type | Description |
---|---|---|
$spec | mixed | The column(s) and direction to order by. |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
query(integer $fetchMode = null, mixed $bind = array()) : \PDO_Statement | \Zend_Db_Statement
Executes the current select object and returns the result
Name | Type | Description |
---|---|---|
$fetchMode | integer | OPTIONAL |
$bind | mixed | An array of data to bind to the placeholders. |
Type | Description |
---|---|
\PDO_Statement | \Zend_Db_Statement |
reset(string $part = null) : \Zend_Db_Select
Clear parts of the Select object, or an individual part.
Name | Type | Description |
---|---|---|
$part | string | OPTIONAL |
Type | Description |
---|---|
\Zend_Db_Select |
union(array $select = array(), $type = self::SQL_UNION) : \Zend_Db_Select
Adds a UNION clause to the query.
$sql1 = $db->select();
$sql2 = "SELECT ...";
$select = $db->select()
->union(array($sql1, $sql2))
->order("id");
Name | Type | Description |
---|---|---|
$select | array | Array of select clauses for the union. |
$type |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |
where(string $cond, mixed $value = null, int $type = null) : \Zend_Db_Select
Adds a WHERE condition to the query by AND.
// simplest but non-secure
$select->where("id = $id");
// secure (ID is quoted but matched anyway)
$select->where('id = ?', $id);
// alternatively, with named binding
$select->where('id = :id');
Note that it is more correct to use named bindings in your
queries for values other than strings. When you use named
bindings, don't forget to pass the values when actually
making a query:
$db->fetchAll($select, array('id' => 5));
Name | Type | Description |
---|---|---|
$cond | string | The WHERE condition. |
$value | mixed | OPTIONAL The value to quote into the condition. |
$type | int | OPTIONAL The type of the given value |
Type | Description |
---|---|
\Zend_Db_Select | This Zend_Db_Select object. |