JDatabaseQueryPostgresql
class JDatabaseQueryPostgresql extends JDatabaseQuery implements JDatabaseQueryLimitable
Query Building Class.
Methods
Magic method to provide method alias support for quote() and quoteName().
Magic function to convert the query to a string, only for postgresql specific query
Add a single column, or array of columns to the CALL clause of the query.
Casts a value to a char.
Gets the number of characters in a string.
Clear data from the query or a specific clause of the query.
Adds a column, or array of column names that would be used for an INSERT INTO statement.
Concatenates an array of column names or values.
Gets the current date and time.
Returns a PHP date() function compliant date format for the database driver.
Add a table name to the DELETE clause of the query.
Method to escape a string for usage in an SQL statement.
Add a single column, or array of columns to the EXEC clause of the query.
Add a table to the FROM clause of the query.
Used to get a string to extract year from date column.
Used to get a string to extract month from date column.
Used to get a string to extract day from date column.
Used to get a string to extract hour from date column.
Used to get a string to extract minute from date column.
Used to get a string to extract seconds from date column.
Add a grouping column to the GROUP clause of the query.
A conditions to the HAVING clause of the query.
Add an INNER JOIN clause to the query.
Add a table name to the INSERT clause of the query.
Add a JOIN clause to the query.
Add a LEFT JOIN clause to the query.
Get the null or zero representation of a timestamp for the database driver.
Add an ordering column to the ORDER clause of the query.
Add an OUTER JOIN clause to the query.
Method to quote and optionally escape a string to database requirements for insertion into the database.
Wrap an SQL statement identifier name such as column, table or database names in quotes to prevent injection risks and reserved word conflicts.
Add a RIGHT JOIN clause to the query.
Add a single column, or array of columns to the SELECT clause of the query.
Add a single condition string, or an array of strings to the SET clause of the query.
Allows a direct query to be provided to the database driver's setQuery() method, but still allow queries to have bounded variables.
Add a table name to the UPDATE clause of the query.
Adds a tuple, or array of tuples that would be used as values for an INSERT INTO statement.
Add a single condition, or an array of conditions to the WHERE clause of the query.
Extend the WHERE clause with a single condition or an array of conditions, with a potentially different logical operator from the one in the current WHERE clause.
Extend the WHERE clause with an OR and a single condition or an array of conditions.
Extend the WHERE clause with an AND and a single condition or an array of conditions.
Method to provide deep copy support to nested objects and arrays when cloning.
Add a query to UNION with the current query.
Add a query to UNION DISTINCT with the current query. Simply a proxy to union with the DISTINCT keyword.
Find and replace sprintf-like tokens in a format string.
Add to the current date and time in Postgresql.
Add a query to UNION ALL with the current query.
Return the number of the current row.
Sets the FOR UPDATE lock on select's output row
Sets the FOR SHARE lock on select's output row
Sets the NOWAIT lock on select's output row
Set the LIMIT clause to the query
Set the OFFSET clause to the query
Add the RETURNING element to INSERT INTO statement.
Sets the offset and limit for the result set, if the database driver supports it.
Method to modify a query already in string format with the needed additions to make the query limited to a particular number of results, or start at a particular offset.
Return correct regexp operator for Postgresql.
Return correct rand() function for Postgresql.
Details
string
__call(
string $method,
array $args)
Magic method to provide method alias support for quote() and quoteName().
string
__toString()
Magic function to convert the query to a string, only for postgresql specific query
JDatabaseQuery
call(
mixed $columns)
Add a single column, or array of columns to the CALL clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query. The call method can, however, be called multiple times in the same query.
Usage: $query->call('a.')->call('b.id'); $query->call(array('a.', 'b.id'));
string
castAsChar(
string $value,
string $len = null)
Casts a value to a char.
Ensure that the value is properly quoted before passing to the method.
Usage: $query->select($query->castAsChar('a')); $query->select($query->castAsChar('a', 40));
string
charLength(
string $field,
string $operator = null,
string $condition = null)
Gets the number of characters in a string.
Note, use 'length' to find the number of bytes in a string.
Usage: $query->select($query->charLength('a'));
JDatabaseQuery
clear(
string $clause = null)
Clear data from the query or a specific clause of the query.
JDatabaseQuery
columns(
mixed $columns)
Adds a column, or array of column names that would be used for an INSERT INTO statement.
string
concatenate(
array $values,
string $separator = null)
Concatenates an array of column names or values.
Usage: $query->select($query->concatenate(array('a', 'b')));
string
dateFormat()
Returns a PHP date() function compliant date format for the database driver.
This method is provided for use where the query object is passed to a function for modification. If you have direct access to the database object, it is recommended you use the getDateFormat method directly.
string
dump()
Creates a formatted dump of the query for debugging purposes.
Usage: echo $query->dump();
JDatabaseQuery
delete(
string $table = null)
Add a table name to the DELETE clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query.
Usage: $query->delete('#__a')->where('id = 1');
string
escape(
string $text,
boolean $extra = false)
Method to escape a string for usage in an SQL statement.
This method is provided for use where the query object is passed to a function for modification. If you have direct access to the database object, it is recommended you use the escape method directly.
Note that 'e' is an alias for this method as it is in JDatabaseDriver.
JDatabaseQuery
exec(
mixed $columns)
Add a single column, or array of columns to the EXEC clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query. The exec method can, however, be called multiple times in the same query.
Usage: $query->exec('a.')->exec('b.id'); $query->exec(array('a.', 'b.id'));
JDatabaseQuery
from(
mixed $tables,
string $subQueryAlias = null)
Add a table to the FROM clause of the query.
Note that while an array of tables can be provided, it is recommended you use explicit joins.
Usage: $query->select('*')->from('#__a');
string
year(
string $date)
Used to get a string to extract year from date column.
Usage: $query->select($query->year($query->quoteName('dateColumn')));
string
month(
string $date)
Used to get a string to extract month from date column.
Usage: $query->select($query->month($query->quoteName('dateColumn')));
string
day(
string $date)
Used to get a string to extract day from date column.
Usage: $query->select($query->day($query->quoteName('dateColumn')));
string
hour(
string $date)
Used to get a string to extract hour from date column.
Usage: $query->select($query->hour($query->quoteName('dateColumn')));
string
minute(
string $date)
Used to get a string to extract minute from date column.
Usage: $query->select($query->minute($query->quoteName('dateColumn')));
string
second(
string $date)
Used to get a string to extract seconds from date column.
Usage: $query->select($query->second($query->quoteName('dateColumn')));
JDatabaseQuery
group(
mixed $columns)
Add a grouping column to the GROUP clause of the query.
Usage: $query->group('id');
JDatabaseQuery
having(
mixed $conditions,
string $glue = 'AND')
A conditions to the HAVING clause of the query.
Usage: $query->group('id')->having('COUNT(id) > 5');
JDatabaseQuery
innerJoin(
string $condition)
Add an INNER JOIN clause to the query.
Usage: $query->innerJoin('b ON b.id = a.id')->innerJoin('c ON c.id = b.id');
JDatabaseQuery
insert(
mixed $table,
boolean $incrementField = false)
Add a table name to the INSERT clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query.
Usage: $query->insert('#a')->set('id = 1'); $query->insert('#a')->columns('id, title')->values('1,2')->values('3,4'); $query->insert('#__a')->columns('id, title')->values(array('1,2', '3,4'));
JDatabaseQuery
join(
string $type,
string $conditions)
Add a JOIN clause to the query.
Usage: $query->join('INNER', 'b ON b.id = a.id);
JDatabaseQuery
leftJoin(
string $condition)
Add a LEFT JOIN clause to the query.
Usage: $query->leftJoin('b ON b.id = a.id')->leftJoin('c ON c.id = b.id');
int
length(
string $value)
Get the length of a string in bytes.
Note, use 'charLength' to find the number of characters in a string.
Usage: query->where($query->length('a').' > 3');
string
nullDate(
boolean $quoted = true)
Get the null or zero representation of a timestamp for the database driver.
This method is provided for use where the query object is passed to a function for modification. If you have direct access to the database object, it is recommended you use the nullDate method directly.
Usage: $query->where('modified_date <> '.$query->nullDate());
JDatabaseQuery
order(
mixed $columns)
Add an ordering column to the ORDER clause of the query.
Usage: $query->order('foo')->order('bar'); $query->order(array('foo','bar'));
JDatabaseQuery
outerJoin(
string $condition)
Add an OUTER JOIN clause to the query.
Usage: $query->outerJoin('b ON b.id = a.id')->outerJoin('c ON c.id = b.id');
string
quote(
mixed $text,
boolean $escape = true)
Method to quote and optionally escape a string to database requirements for insertion into the database.
This method is provided for use where the query object is passed to a function for modification. If you have direct access to the database object, it is recommended you use the quote method directly.
Note that 'q' is an alias for this method as it is in JDatabaseDriver.
Usage: $query->quote('fulltext'); $query->q('fulltext'); $query->q(array('option', 'fulltext'));
mixed
quoteName(
mixed $name,
mixed $as = null)
Wrap an SQL statement identifier name such as column, table or database names in quotes to prevent injection risks and reserved word conflicts.
This method is provided for use where the query object is passed to a function for modification. If you have direct access to the database object, it is recommended you use the quoteName method directly.
Note that 'qn' is an alias for this method as it is in JDatabaseDriver.
Usage: $query->quoteName('#a'); $query->qn('#a');
JDatabaseQuery
rightJoin(
string $condition)
Add a RIGHT JOIN clause to the query.
Usage: $query->rightJoin('b ON b.id = a.id')->rightJoin('c ON c.id = b.id');
JDatabaseQuery
select(
mixed $columns)
Add a single column, or array of columns to the SELECT clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query. The select method can, however, be called multiple times in the same query.
Usage: $query->select('a.')->select('b.id'); $query->select(array('a.', 'b.id'));
JDatabaseQuery
set(
mixed $conditions,
string $glue = ',')
Add a single condition string, or an array of strings to the SET clause of the query.
Usage: $query->set('a = 1')->set('b = 2'); $query->set(array('a = 1', 'b = 2');
JDatabaseQuery
setQuery(
mixed $sql)
Allows a direct query to be provided to the database driver's setQuery() method, but still allow queries to have bounded variables.
Usage: $query->setQuery('select * from #__users');
JDatabaseQuery
update(
string $table)
Add a table name to the UPDATE clause of the query.
Note that you must not mix insert, update, delete and select method calls when building a query.
Usage: $query->update('#__foo')->set(...);
JDatabaseQuery
values(
string $values)
Adds a tuple, or array of tuples that would be used as values for an INSERT INTO statement.
Usage: $query->values('1,2,3')->values('4,5,6'); $query->values(array('1,2,3', '4,5,6'));
JDatabaseQuery
where(
mixed $conditions,
string $glue = 'AND')
Add a single condition, or an array of conditions to the WHERE clause of the query.
Usage: $query->where('a = 1')->where('b = 2'); $query->where(array('a = 1', 'b = 2'));
JDatabaseQuery
extendWhere(
string $outerGlue,
mixed $conditions,
string $innerGlue = 'AND')
Extend the WHERE clause with a single condition or an array of conditions, with a potentially different logical operator from the one in the current WHERE clause.
Usage: $query->where(array('a = 1', 'b = 2'))->extendWhere('XOR', array('c = 3', 'd = 4')); will produce: WHERE ((a = 1 AND b = 2) XOR (c = 3 AND d = 4)
JDatabaseQuery
orWhere(
mixed $conditions,
string $glue = 'AND')
Extend the WHERE clause with an OR and a single condition or an array of conditions.
Usage: $query->where(array('a = 1', 'b = 2'))->orWhere(array('c = 3', 'd = 4')); will produce: WHERE ((a = 1 AND b = 2) OR (c = 3 AND d = 4)
JDatabaseQuery
andWhere(
mixed $conditions,
string $glue = 'OR')
Extend the WHERE clause with an AND and a single condition or an array of conditions.
Usage: $query->where(array('a = 1', 'b = 2'))->andWhere(array('c = 3', 'd = 4')); will produce: WHERE ((a = 1 AND b = 2) AND (c = 3 OR d = 4)
JDatabaseQuery
union(
mixed $query,
boolean $distinct = false,
string $glue = '')
Add a query to UNION with the current query.
Multiple unions each require separate statements and create an array of unions.
Usage (the $query base query MUST be a select query): $query->union('SELECT name FROM #foo') $query->union('SELECT name FROM #foo', true) $query->union($query2)->union($query3)
The $query attribute as an array is deprecated and will not be supported in 4.0.
$query->union(array('SELECT name FROM #foo','SELECT name FROM #bar')) $query->union(array($query2, $query3))
JDatabaseQuery
unionDistinct(
mixed $query,
string $glue = '')
Add a query to UNION DISTINCT with the current query. Simply a proxy to union with the DISTINCT keyword.
Usage: $query->unionDistinct('SELECT name FROM #__foo')
string
format(
string $format)
Find and replace sprintf-like tokens in a format string.
Each token takes one of the following forms: %% - A literal percent character. %[t] - Where [t] is a type specifier. %[n]$[x] - Where [n] is an argument specifier and [t] is a type specifier.
Types: a - Numeric: Replacement text is coerced to a numeric type but not quoted or escaped. e - Escape: Replacement text is passed to $this->escape(). E - Escape (extra): Replacement text is passed to $this->escape() with true as the second argument. n - Name Quote: Replacement text is passed to $this->quoteName(). q - Quote: Replacement text is passed to $this->quote(). Q - Quote (no escape): Replacement text is passed to $this->quote() with false as the second argument. r - Raw: Replacement text is used as-is. (Be careful)
Date Types: - Replacement text automatically quoted (use uppercase for Name Quote). - Replacement text should be a string in date format or name of a date column. y/Y - Year m/M - Month d/D - Day h/H - Hour i/I - Minute s/S - Second
Invariable Types: - Takes no argument. - Argument index not incremented. t - Replacement text is the result of $this->currentTimestamp(). z - Replacement text is the result of $this->nullDate(false). Z - Replacement text is the result of $this->nullDate(true).
Usage:
$query->format('SELECT %1$n FROM %2$n WHERE %3$n = %4$a', 'foo', '#__foo', 'bar', 1);
Returns: SELECT foo
FROM #__foo
WHERE bar
= 1
Notes: The argument specifier is optional but recommended for clarity. The argument index used for unspecified tokens is incremented only when used.
string
dateAdd(
string $date,
string $interval,
string $datePart)
Add to the current date and time in Postgresql.
Usage: $query->select($query->dateAdd()); Prefixing the interval with a - (negative sign) will cause subtraction to be used.
JDatabaseQuery
unionAll(
mixed $query,
boolean $distinct = false,
string $glue = '')
Add a query to UNION ALL with the current query.
Multiple unions each require separate statements and create an array of unions.
Usage: $query->union('SELECT name FROM #__foo')
The $query attribute as an array is deprecated and will not be supported in 4.0.
$query->union(array('SELECT name FROM #foo','SELECT name FROM #bar'))
JDatabaseQuery
selectRowNumber(
string $orderBy,
string $orderColumnAlias)
Return the number of the current row.
JDatabaseQueryPostgresql
forUpdate(
string $table_name,
string $glue = ',')
Sets the FOR UPDATE lock on select's output row
JDatabaseQueryPostgresql
forShare(
string $table_name,
string $glue = ',')
Sets the FOR SHARE lock on select's output row
JDatabaseQueryPostgresql
returning(
mixed $pkCol)
Add the RETURNING element to INSERT INTO statement.
JDatabaseQuery
setLimit(
integer $limit,
integer $offset)
Sets the offset and limit for the result set, if the database driver supports it.
Usage: $query->setLimit(100, 0); (retrieve 100 rows, starting at first record) $query->setLimit(50, 50); (retrieve 50 rows, starting at 50th record)
string
processLimit(
string $query,
integer $limit,
integer $offset)
Method to modify a query already in string format with the needed additions to make the query limited to a particular number of results, or start at a particular offset.