Class Postgres
PostgreSQL layer for DBO.
- CakeObject
- DataSource
- DboSource
- Postgres
Copyright: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
License: MIT License
Location: Cake/Model/Datasource/Database/Postgres.php
Properties summary
-
$_baseConfig
protectedarray
Base driver configuration settings. Merged with user settings. -
$_sequenceMap
protectedarray
Contains mappings of custom auto-increment sequences, if a table uses a sequence name other than what is dictated by convention.
-
$_sqlOps
protectedarray
The set of valid SQL operations usable in a WHERE statement -
$columns
publicarray
Columns -
$description
publicstring
Driver description -
$endQuote
publicstring
Ending Quote -
$startQuote
publicstring
Starting Quote
Inherited Properties
-
_connection
,_methodCacheChange
,_queriesCnt
,_queriesLog
,_queriesLogMax
,_queriesTime
,_queryCache
,_queryDefaults
,_result
,_sqlBoolOps
,_transactionNesting
,affected
,alias
,cacheMethods
,configKeyName
,fieldParameters
,fullDebug
,index
,map
,methodCache
,numRows
,tableParameters
,took
,useNestedTransactions
,virtualFieldSeparator
_descriptions
,_sources
,_transactionStarted
,cacheSources
,config
,connected
Method Summary
-
_alterIndexes() protected
Generate PostgreSQL index alteration statements for a table. -
_quoteFunctionField() protected
Auxiliary function to quote matched
(Model.fields)
from a preg_replace_callback call Quotes the fields in a function call. -
alterSchema() public
Alter the Schema of a table. -
boolean() public
Translates between PHP boolean values and PostgreSQL boolean values -
buildColumn() public
Generate a Postgres-native column schema string -
buildIndex() public
Format indexes for create table -
column() public
Converts database-layer column types to basic types -
connect() public
Connects to the database using options in the given configuration array. -
describe() public
Returns an array of the fields in given table name. -
enabled() public
Check if PostgreSQL is enabled/loaded -
fetchResult() public
Fetches the next row from the current result set -
fields() public
Generates the fields list of an SQL query. -
getEncoding() public
Gets the database encoding -
getSchemaName() public
Gets the schema name -
getSequence() public
Gets the associated sequence for the given table/field -
index() public
Returns an array of the indexes in given datasource name. -
lastInsertId() public
Returns the ID generated from the previous INSERT operation. -
length() public
Gets the length of a database-native column description, or null if no length -
limit() public
Returns a limit statement in the correct format for the particular database. -
listSources() public
Returns an array of tables in the database. If there are no tables, an error is raised and the application exits. -
name() public
Prepares field names to be quoted by parent -
nestedTransactionSupported() public
Check if the server support nested transactions -
renderStatement() public
Overrides DboSource::renderStatement to handle schema generation with Postgres-style indexes -
resetSequence() public
Reset a sequence based on the MAX() value of $column. Useful for resetting sequences after using insertMulti().
-
resultSet() public
resultSet method -
setEncoding() public
Sets the database encoding -
truncate() public
Deletes all the records in a table and drops all associated auto-increment sequences -
value() public
Returns a quoted and escaped string of $data for use in an SQL statement.
Method Detail
_alterIndexes() protected ¶
_alterIndexes( string $table , array $indexes )
Generate PostgreSQL index alteration statements for a table.
Parameters
- string $table
- Table to alter indexes for
- array $indexes
- Indexes to add and drop
Returns
Index alteration statements
_quoteFunctionField() protected ¶
_quoteFunctionField( string $match )
Auxiliary function to quote matched (Model.fields)
from a preg_replace_callback call
Quotes the fields in a function call.
Parameters
- string $match
- matched string
Returns
quoted string
alterSchema() public ¶
alterSchema( array $compare , string $table = null )
Alter the Schema of a table.
Parameters
- array $compare
- Results of CakeSchema::compare()
- string $table optional null
- name of the table
Returns
Overrides
boolean() public ¶
boolean( mixed $data , boolean $quote = false )
Translates between PHP boolean values and PostgreSQL boolean values
Parameters
- mixed $data
- Value to be translated
- boolean $quote optional false
- true to quote a boolean to be used in a query, false to return the boolean value
Returns
Converted boolean value
Overrides
buildColumn() public ¶
buildColumn( array $column )
Generate a Postgres-native column schema string
Parameters
- array $column
An array structured like the following: array('name'=>'value', 'type'=>'value'[, options]), where options can be 'default', 'length', or 'key'.
Returns
Overrides
buildIndex() public ¶
buildIndex( array $indexes , string $table = null )
Format indexes for create table
Parameters
- array $indexes
- The index to build
- string $table optional null
- The table name.
Returns
Overrides
column() public ¶
column( string $real )
Converts database-layer column types to basic types
Parameters
- string $real
- Real database-layer column type (i.e. "varchar(255)")
Returns
Abstract column type (i.e. "string")
Overrides
connect() public ¶
connect( )
Connects to the database using options in the given configuration array.
Returns
True if successfully connected.
Throws
Overrides
describe() public ¶
describe( Model
|string $model )
Returns an array of the fields in given table name.
Parameters
-
Model
|string $model - Name of database table to inspect
Returns
Fields in table. Keys are name and type
Overrides
fields() public ¶
fields( Model
$model , string $alias = null , mixed $fields = array() , boolean $quote = true )
Generates the fields list of an SQL query.
Parameters
-
Model
$model - The model to get fields for.
- string $alias optional null
- Alias table name.
- mixed $fields optional array()
- The list of fields to get.
- boolean $quote optional true
- Whether or not to quote identifiers.
Returns
Overrides
getEncoding() public ¶
getEncoding( )
Gets the database encoding
Returns
The database encoding
getSequence() public ¶
getSequence( string|Model
$table , string $field = 'id' )
Gets the associated sequence for the given table/field
Parameters
-
string|
Model
$table - Either a full table name (with prefix) as a string, or a model object
- string $field optional 'id'
- Name of the ID database field. Defaults to "id"
Returns
The associated sequence name from the sequence map, defaults to "{$table}_{$field}_seq"
index() public ¶
index( string $model )
Returns an array of the indexes in given datasource name.
Parameters
- string $model
- Name of model to inspect
Returns
Fields in table. Keys are column and unique
Overrides
lastInsertId() public ¶
lastInsertId( string $source = null , string $field = 'id' )
Returns the ID generated from the previous INSERT operation.
Parameters
- string $source optional null
- Name of the database table
- string $field optional 'id'
- Name of the ID database field. Defaults to "id"
Returns
Overrides
length() public ¶
length( string $real )
Gets the length of a database-native column description, or null if no length
Parameters
- string $real
- Real database-layer column type (i.e. "varchar(255)")
Returns
An integer representing the length of the column
Overrides
limit() public ¶
limit( integer $limit , integer $offset = null )
Returns a limit statement in the correct format for the particular database.
Parameters
- integer $limit
- Limit of results returned
- integer $offset optional null
- Offset from which to start results
Returns
SQL limit/offset statement
Overrides
listSources() public ¶
listSources( mixed $data = null )
Returns an array of tables in the database. If there are no tables, an error is raised and the application exits.
Parameters
- mixed $data optional null
- The sources to list.
Returns
Array of table names in the database
Overrides
name() public ¶
name( string $data )
Prepares field names to be quoted by parent
Parameters
- string $data
- The name to format.
Returns
SQL field
Overrides
nestedTransactionSupported() public ¶
nestedTransactionSupported( )
Check if the server support nested transactions
Returns
Overrides
renderStatement() public ¶
renderStatement( string $type , array $data )
Overrides DboSource::renderStatement to handle schema generation with Postgres-style indexes
Parameters
- string $type
- The query type.
- array $data
- The array of data to render.
Returns
Overrides
resetSequence() public ¶
resetSequence( string $table , string $column )
Reset a sequence based on the MAX() value of $column. Useful for resetting sequences after using insertMulti().
Parameters
- string $table
- The name of the table to update.
- string $column
The column to use when resetting the sequence value, the sequence name will be fetched using Postgres::getSequence();
Returns
success.
Overrides
setEncoding() public ¶
setEncoding( mixed $enc )
Sets the database encoding
Parameters
- mixed $enc
- Database encoding
Returns
True on success, false on failure
truncate() public ¶
truncate( string|Model
$table , boolean $reset = false )
Deletes all the records in a table and drops all associated auto-increment sequences
Parameters
-
string|
Model
$table - A string or model class representing the table to be truncated
- boolean $reset optional false
true for resetting the sequence, false to leave it as is. and if 1, sequences are not modified
Returns
SQL TRUNCATE TABLE statement, false if not applicable.
Overrides
value() public ¶
value( string $data , string $column = null , boolean $null = true )
Returns a quoted and escaped string of $data for use in an SQL statement.
Parameters
- string $data
- String to be prepared for use in an SQL statement
- string $column optional null
- The column datatype into which this data will be inserted.
- boolean $null optional true
- Column allows NULL values
Returns
Quoted and escaped data
Overrides
Methods inherited from DboSource
__construct() public ¶
__construct( array $config = null , boolean $autoConnect = true )
Constructor
Parameters
- array $config optional null
- Array of configuration information for the Datasource.
- boolean $autoConnect optional true
- Whether or not the datasource should automatically connect.
Throws
Overrides
__destruct() public ¶
__destruct( )
Used for storing in cache the results of the in-memory methodCache
Overrides
_buildFieldParameters() protected ¶
_buildFieldParameters( string $columnString , array $columnData , string $position )
Build the field parameters, in a position
Parameters
- string $columnString
- The partially built column string
- array $columnData
- The array of column data.
- string $position
- The position type to use. 'beforeDefault' or 'afterDefault' are common
Returns
a built column with the field parameters added.
_constructVirtualFields() protected ¶
_constructVirtualFields( Model
$Model , string $alias , array $fields )
Converts model virtual fields into sql expressions to be fetched later
Parameters
-
Model
$Model - The model to get virtual fields for.
- string $alias
- Alias table name
- array $fields
- virtual fields to be used on query
Returns
_dropTable() protected ¶
_dropTable( type $table )
Generate a "drop table" statement for a single table
Parameters
- type $table
- Name of the table to drop
Returns
Drop table SQL statement
_execute() protected ¶
_execute( string $sql , array $params = array() , array $prepareOptions = array() )
Executes given SQL statement.
Parameters
- string $sql
- SQL statement
- array $params optional array()
- list of params to be bound to query
- array $prepareOptions optional array()
- Options to be used in the prepare statement
Returns
PDOStatement if query executes with no problem, true as the result of a successful, false on error query returning no rows, such as a CREATE statement, false otherwise
Throws
_fetchHasAndBelongsToMany() protected ¶
_fetchHasAndBelongsToMany( Model
$Model , string $query , array $ids , string $association )
Fetch 'hasAndBelongsToMany' associations.
Parameters
-
Model
$Model - Primary model object.
- string $query
- Association query.
- array $ids
- Array of IDs of associated records.
- string $association
- Association name.
Returns
Association results.
_fetchHasMany() protected ¶
_fetchHasMany( Model
$Model , string $query , array $ids )
Fetch 'hasMany' associations.
Parameters
-
Model
$Model - Primary model object.
- string $query
- Association query template.
- array $ids
- Array of IDs of associated records.
Returns
Association results.
_filterResults() protected ¶
_filterResults( array $resultSet , Model
$Model , array $filtered = array() )
Passes association results through afterFind filters of the corresponding model.
The primary model is always excluded, because the filtering is later done by Model::_filterResults().
Parameters
- array $resultSet
- $resultSet Reference of resultset to be filtered.
-
Model
$Model - Instance of model to operate against.
- array $filtered optional array()
- List of classes already filtered, to be skipped.
Returns
Array of results that have been filtered through $Model->afterFind.
_filterResultsInclusive() protected ¶
_filterResultsInclusive( array $resultSet , Model
$Model , array $toBeFiltered = array() )
Passes association results through afterFind filters of the corresponding model.
Similar to DboSource::_filterResults(), but this filters only specified models. The primary model can not be specified, because this call DboSource::_filterResults() internally.
Parameters
- array $resultSet
- $resultSet Reference of resultset to be filtered.
-
Model
$Model - Instance of model to operate against.
- array $toBeFiltered optional array()
- List of classes to be filtered.
Returns
Array of results that have been filtered through $Model->afterFind.
_getJoins() protected ¶
_getJoins( Model
$Model )
Returns an array of SQL JOIN conditions from a model's associations.
Parameters
-
Model
$Model - The model to get joins for.2
Returns
_matchRecords() protected ¶
_matchRecords( Model
$Model , mixed $conditions = null )
Gets a list of record IDs for the given conditions. Used for multi-record updates and deletes in databases that do not support aliases in UPDATE/DELETE queries.
Parameters
-
Model
$Model - The model to find matching records for.
- mixed $conditions optional null
- The conditions to match against.
Returns
List of record IDs
_mergeAssociation() protected ¶
_mergeAssociation( array $data , array $merge , string $association , string $type , boolean $selfJoin = false )
Merge association of merge into data
Parameters
- array $data
- $data The data to merge.
- array $merge
- $merge The data to merge.
- string $association
- The association name to merge.
- string $type
- The type of association
- boolean $selfJoin optional false
- Whether or not this is a self join.
_mergeConditions() protected ¶
_mergeConditions( mixed $query , mixed $assoc )
Merges a mixed set of string/array conditions.
Parameters
- mixed $query
- The query to merge conditions for.
- mixed $assoc
- The association names.
Returns
_mergeHasMany() protected ¶
_mergeHasMany( array $resultSet , array $assocResultSet , string $association , Model
$Model )
Merge the results of 'hasMany' associations.
Note: this function also deals with the formatting of the data.
Parameters
- array $resultSet
- $resultSet Data to merge into.
- array $assocResultSet
- Data to merge.
- string $association
- Name of Model being merged.
-
Model
$Model - Model being merged onto.
_parseKey() protected ¶
_parseKey( string $key , mixed $value , Model
$Model = null )
Extracts a Model.field identifier and an SQL condition operator from a string, formats and inserts values, and composes them into an SQL snippet.
Parameters
- string $key
- An SQL key snippet containing a field and optional SQL operator
- mixed $value
- The value(s) to be inserted in the string
-
Model
$Model optional null - Model object initiating the query
Returns
_prepareUpdateFields() protected ¶
_prepareUpdateFields( Model
$Model , array $fields , boolean $quoteValues = true , boolean $alias = false )
Quotes and prepares fields and values for an SQL UPDATE statement
Parameters
-
Model
$Model - The model to prepare fields for.
- array $fields
- The fields to update.
- boolean $quoteValues optional true
- If values should be quoted, or treated as SQL snippets
- boolean $alias optional false
- Include the model alias in the field name
Returns
Fields and values, quoted and prepared
_quoteFields() protected ¶
_quoteFields( string $conditions )
Quotes Model.fields
Parameters
- string $conditions
- The conditions to quote.
Returns
or false if no match
_quoteMatchedField() protected ¶
_quoteMatchedField( string $match )
Auxiliary function to quote matches Model.fields
from a preg_replace_callback call
Parameters
- string $match
- matched string
Returns
quoted string
_scrubQueryData() protected ¶
_scrubQueryData( array $data )
Private helper method to remove query metadata in given data array.
Parameters
- array $data
- The data to scrub.
Returns
_writeQueryCache() protected ¶
_writeQueryCache( string $sql , mixed $data , array $params = array() )
Writes a new key for the in memory sql query cache
Parameters
- string $sql
- SQL query
- mixed $data
- result of $sql query
- array $params optional array()
- query params bound as values
begin() public ¶
begin( )
Begin a transaction
Returns
True on success, false on fail (i.e. if the database/model does not support transactions, or a transaction has not started).
Overrides
buildAssociationQuery() public ¶
buildAssociationQuery( Model
$Model , array $queryData )
Builds an SQL statement.
This is merely a convenient wrapper to DboSource::buildStatement().
Parameters
-
Model
$Model - The model to build an association query for.
- array $queryData
- An array of queryData information containing keys similar to Model::find().
Returns
String containing an SQL statement.
See
buildJoinStatement() public ¶
buildJoinStatement( array $join )
Builds and generates a JOIN condition from an array. Handles final clean-up before conversion.
Parameters
- array $join
- An array defining a JOIN condition in a query.
Returns
An SQL JOIN condition to be used in a query.
See
DboSource::buildStatement()
buildStatement() public ¶
buildStatement( array $query , Model
$Model )
Builds and generates an SQL statement from an array. Handles final clean-up before conversion.
Parameters
- array $query
- An array defining an SQL query.
-
Model
$Model - The model object which initiated the query.
Returns
An executable SQL statement.
See
buildTableParameters() public ¶
buildTableParameters( array $parameters , string $table = null )
Format parameters for create table
Parameters
- array $parameters
- The parameters to create SQL for.
- string $table optional null
- The table name.
Returns
cacheMethod() public ¶
cacheMethod( string $method , string $key , mixed $value = null )
Cache a value into the methodCaches. Will respect the value of DboSource::$cacheMethods. Will retrieve a value from the cache if $value is null.
If caching is disabled and a write is attempted, the $value will be returned. A read will either return the value or null.
Parameters
- string $method
- Name of the method being cached.
- string $key
- The key name for the cache operation.
- mixed $value optional null
- The value to cache into memory.
Returns
Either null on failure, or the value if its set.
cacheMethodFilter() public ¶
cacheMethodFilter( string $method , string $key , mixed $value )
Filters to apply to the results of name
and fields
. When the filter for a given method does not return true
then the result is not added to the memory cache.
Some examples:
// For method fields, do not cache values that contain floats if ($method === 'fields') { $hasFloat = preg_grep('/(\d+)?\.\d+/', $value); return count($hasFloat) === 0; } return true;
// For method name, do not cache values that have the name created if ($method === 'name') { return preg_match('/^`created`$/', $value) !== 1; } return true;
// For method name, do not cache values that have the key 472551d38e1f8bbc78d7dfd28106166f if ($key === '472551d38e1f8bbc78d7dfd28106166f') { return false; } return true;
Parameters
- string $method
- Name of the method being cached.
- string $key
- The key name for the cache operation.
- mixed $value
- The value to cache into memory.
Returns
Whether or not to cache
cacheMethodHasher() public ¶
cacheMethodHasher( string $value )
Hashes a given value.
Method caching uses md5
(by default) to construct cache keys. If you have problems with collisions,
try a different hashing algorithm or set DboSource::$cacheMethods to false.
Parameters
- string $value
- Value to hash
Returns
Hashed value
See
http://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed
calculate() public ¶
calculate( Model
$Model , string $func , array $params = array() )
Returns an SQL calculation, i.e. COUNT() or MAX()
Parameters
-
Model
$Model - The model to get a calculated field for.
- string $func
- Lowercase name of SQL function, i.e. 'count' or 'max'
- array $params optional array()
- Function parameters (any values must be quoted manually)
Returns
An SQL calculation function
close() public ¶
close( )
Disconnects database, kills the connection and says the connection is closed.
Overrides
commit() public ¶
commit( )
Commit a transaction
Returns
True on success, false on fail (i.e. if the database/model does not support transactions, or a transaction has not started).
Overrides
conditionKeysToString() public ¶
conditionKeysToString( array $conditions , boolean $quoteValues = true , Model
$Model = null )
Creates a WHERE clause by parsing given conditions array. Used by DboSource::conditions().
Parameters
- array $conditions
- Array or string of conditions
- boolean $quoteValues optional true
- If true, values should be quoted
-
Model
$Model optional null - A reference to the Model instance making the query
Returns
SQL fragment
conditions() public ¶
conditions( mixed $conditions , boolean $quoteValues = true , boolean $where = true , Model
$Model = null )
Creates a WHERE clause by parsing given conditions data. If an array or string conditions are provided those conditions will be parsed and quoted. If a boolean is given it will be integer cast as condition. Null will return 1 = 1.
Results of this method are stored in a memory cache. This improves performance, but because the method uses a hashing algorithm it can have collisions. Setting DboSource::$cacheMethods to false will disable the memory cache.
Parameters
- mixed $conditions
- Array or string of conditions, or any value.
- boolean $quoteValues optional true
- If true, values should be quoted
- boolean $where optional true
- If true, "WHERE " will be prepended to the return value
-
Model
$Model optional null - A reference to the Model instance making the query
Returns
SQL fragment
create() public ¶
create( Model
$Model , array $fields = null , array $values = null )
The "C" in CRUD
Creates new records in the database.
Parameters
-
Model
$Model - Model object that the record is for.
- array $fields optional null
An array of field names to insert. If null, $Model->data will be used to generate field names.
- array $values optional null
An array of values with keys matching the fields. If null, $Model->data will be used to generate values.
Returns
Success
Overrides
createSchema() public ¶
createSchema( CakeSchema
$schema , string $tableName = null )
Generate a database-native schema for the given Schema object
Parameters
-
CakeSchema
$schema - An instance of a subclass of CakeSchema
- string $tableName optional null
Optional. If specified only the table name given will be generated. Otherwise, all tables defined in the schema are generated.
Returns
defaultConditions() public ¶
defaultConditions( Model
$Model , string|array|boolean $conditions , boolean $useAlias = true )
Creates a default set of conditions from the model if $conditions is null/empty. If conditions are supplied then they will be returned. If a model doesn't exist and no conditions were provided either null or false will be returned based on what was input.
Parameters
-
Model
$Model - The model to get conditions for.
- string|array|boolean $conditions
Array of conditions, conditions string, null or false. If an array of conditions, or string conditions those conditions will be returned. With other values the model's existence will be checked. If the model doesn't exist a null or false will be returned depending on the input value.
- boolean $useAlias optional true
- Use model aliases rather than table names when generating conditions
Returns
Either null, false, $conditions or an array of default conditions to use.
See
DboSource::conditions()
delete() public ¶
delete( Model
$Model , mixed $conditions = null )
Generates and executes an SQL DELETE statement. For databases that do not support aliases in UPDATE queries.
Parameters
-
Model
$Model - The model to delete from
- mixed $conditions optional null
- The conditions to use. If empty the model's primary key will be used.
Returns
Success
Overrides
dropSchema() public ¶
dropSchema( CakeSchema
$schema , string $table = null )
Generate a "drop table" statement for the given Schema object
Parameters
-
CakeSchema
$schema - An instance of a subclass of CakeSchema
- string $table optional null
Optional. If specified only the table name given will be generated. Otherwise, all tables defined in the schema are generated.
Returns
execute() public ¶
execute( string $sql , array $options = array() , array $params = array() )
Queries the database with given SQL statement, and obtains some metadata about the result (rows affected, timing, any errors, number of rows in resultset). The query is also logged. If Configure::read('debug') is set, the log is shown all the time, else it is only shown on errors.
Options
- log - Whether or not the query should be logged to the memory log.
Parameters
- string $sql
- SQL statement
- array $options optional array()
- The options for executing the query.
- array $params optional array()
- values to be bound to the query.
Returns
Resource or object representing the result set, or false on failure
expression() public ¶
expression( string $expression )
Returns an object to represent a database expression in a query. Expression objects are not sanitized or escaped.
Parameters
- string $expression
- An arbitrary SQL expression to be inserted into a query.
Returns
An object representing a database expression to be used in a query
fetchAll() public ¶
fetchAll( string $sql , array|boolean $params = array() , array $options = array() )
Returns an array of all result rows for a given SQL query.
Returns false if no rows matched.
Options
cache
- Returns the cached version of the query, if exists and stores the result in cache. This is a non-persistent cache, and only lasts for a single request. This option defaults to true. If you are directly calling this method, you can disable caching by setting $options tofalse
Parameters
- string $sql
- SQL statement
- array|boolean $params optional array()
Either parameters to be bound as values for the SQL statement, or a boolean to control query caching.
- array $options optional array()
- additional options for the query.
Returns
Array of resultset rows, or false if no rows matched
fetchAssociated() public ¶
fetchAssociated( Model
$Model , string $query , array $ids )
Fetch 'hasMany' associations.
This is just a proxy to maintain BC.
Parameters
-
Model
$Model - Primary model object.
- string $query
- Association query template.
- array $ids
- Array of IDs of associated records.
Returns
Association results.
See
fetchRow() public ¶
fetchRow( string $sql = null )
Returns a row from current resultset as an array
Parameters
- string $sql optional null
- Some SQL to be executed.
Returns
The fetched row as an array
fetchVirtualField() public ¶
fetchVirtualField( array $result )
Modifies $result array to place virtual fields in model entry where they belongs to
Parameters
- array $result
- $result Reference to the fetched row
field() public ¶
field( string $name , string $sql )
Returns a single field of the first of query results for a given SQL query, or false if empty.
Parameters
- string $name
- The name of the field to get.
- string $sql
- The SQL query.
Returns
Value of field read, or false if not found.
flushMethodCache() public ¶
flushMethodCache( )
Empties the method caches. These caches are used by DboSource::name() and DboSource::conditions()
fullTableName() public ¶
fullTableName( Model
|string $model , boolean $quote = true , boolean $schema = true )
Gets full table name including prefix
Parameters
-
Model
|string $model - Either a Model object or a string table name.
- boolean $quote optional true
- Whether you want the table name quoted.
- boolean $schema optional true
- Whether you want the schema name included.
Returns
Full quoted table name
generateAssociationQuery() public ¶
generateAssociationQuery( Model
$Model , Model
|null $LinkModel , string $type , string $association , array $assocData , array $queryData , boolean $external )
Generates a query or part of a query from a single model or two associated models.
Builds a string containing an SQL statement template.
Parameters
-
Model
$Model - Primary Model object.
-
Model
|null $LinkModel - Linked model object.
- string $type
- Association type, one of the model association types ie. hasMany.
- string $association
- Association name.
- array $assocData
- Association data.
- array $queryData
- $queryData An array of queryData information containing keys similar to Model::find().
- boolean $external
- Whether or not the association query is on an external datasource.
Returns
String representing a query. True, when $external is false and association $type is 'hasOne' or 'belongsTo'.
getConstraint() public ¶
getConstraint( string $type , Model
$Model , Model
$LinkModel , string $association , array $assocData , string $association2 = null )
Returns a conditions array for the constraint between two models.
Parameters
Returns
Conditions array defining the constraint between $Model and $LinkModel.
getLockingHint() public ¶
getLockingHint( mixed $mode )
Returns a locking hint for the given mode.
Currently, this method only returns FOR UPDATE when the mode is set to true.
Parameters
- mixed $mode
- Lock mode
Returns
FOR UPDATE clause or null
getLog() public ¶
getLog( boolean $sorted = false , boolean $clear = true )
Get the query log as an array.
Parameters
- boolean $sorted optional false
- Get the queries sorted by time taken, defaults to false.
- boolean $clear optional true
- If True the existing log will cleared.
Returns
Array of queries run as an array
getQueryCache() public ¶
getQueryCache( string $sql , array $params = array() )
Returns the result for a sql query if it is already cached
Parameters
- string $sql
- SQL query
- array $params optional array()
- query params bound as values
Returns
results for query if it is cached, false otherwise
getVersion() public ¶
getVersion( )
Gets the version string of the database server
Returns
The database version
group() public ¶
group( string|array $fields , Model
$Model = null )
Create a GROUP BY SQL clause.
Parameters
- string|array $fields
- Group By fields
-
Model
$Model optional null - The model to get group by fields for.
Returns
Group By clause or null.
hasAny() public ¶
hasAny( Model
$Model , string $sql )
Checks if the specified table contains any record matching specified SQL
Parameters
-
Model
$Model - Model to search
- string $sql
- SQL WHERE clause (condition only, not the "WHERE" part)
Returns
True if the table has a matching record, else false
hasResult() public ¶
hasResult( )
Checks if the result is valid
Returns
True if the result is valid else false
having() public ¶
having( mixed $fields , boolean $quoteValues = true , Model
$Model = null )
Create a HAVING SQL clause.
Parameters
- mixed $fields
- Array or string of conditions
- boolean $quoteValues optional true
- If true, values should be quoted
-
Model
$Model optional null - A reference to the Model instance making the query
Returns
HAVING clause or null
identifier() public ¶
identifier( string $identifier )
Returns an object to represent a database identifier in a query. Expression objects are not sanitized or escaped.
Parameters
- string $identifier
- A SQL expression to be used as an identifier
Returns
An object representing a database identifier to be used in a query
insertMulti() public ¶
insertMulti( string $table , array $fields , array $values )
Inserts multiple values into a table
Parameters
- string $table
- The table being inserted into.
- array $fields
- The array of field/column names being inserted.
- array $values
The array of values to insert. The values should be an array of rows. Each row should have values keyed by the column name. Each row must have the values in the same order as $fields.
Returns
introspectType() public ¶
introspectType( string $value )
Guesses the data type of an array
Parameters
- string $value
- The value to introspect for type data.
Returns
isConnected() public ¶
isConnected( )
Checks if the source is connected to the database.
Returns
True if the database is connected, else false
lastAffected() public ¶
lastAffected( mixed $source = null )
Returns number of affected rows in previous database operation. If no previous operation exists, this returns false.
Parameters
- mixed $source optional null
- The source to check.
Returns
Number of affected rows
Overrides
lastError() public ¶
lastError( PDOStatement $query = null )
Returns a formatted error message from previous database operation.
Parameters
- PDOStatement $query optional null
- the query to extract the error from if any
Returns
Error message with error number
lastNumRows() public ¶
lastNumRows( mixed $source = null )
Returns number of rows in previous resultset. If no previous resultset exists, this returns false.
Parameters
- mixed $source optional null
- Not used
Returns
Number of rows in resultset
Overrides
logQuery() public ¶
logQuery( string $sql , array $params = array() )
Log given SQL query.
Parameters
- string $sql
- SQL statement
- array $params optional array()
- Values binded to the query (prepared statements)
order() public ¶
order( array|string $keys , string $direction = 'ASC' , Model
$Model = null )
Returns an ORDER BY clause as a string.
Parameters
- array|string $keys
- Field reference, as a key (i.e. Post.title)
- string $direction optional 'ASC'
- Direction (ASC or DESC)
-
Model
$Model optional null - Model reference (used to look for virtual field)
Returns
ORDER BY clause
prepareFields() public ¶
prepareFields( Model
$Model , array $queryData )
Prepares fields required by an SQL statement.
When no fields are set, all the $Model fields are returned.
Parameters
-
Model
$Model - The model to prepare.
- array $queryData
- An array of queryData information containing keys similar to Model::find().
Returns
Array containing SQL fields.
queryAssociation() public ¶
queryAssociation( Model
$Model , Model
$LinkModel , string $type , string $association , array $assocData , array $queryData , boolean $external , array $resultSet , integer $recursive , array $stack )
Queries associations.
Used to fetch results on recursive models.
'hasMany' associations with no limit set: Fetch, filter and merge is done recursively for every level.
'hasAndBelongsToMany' associations: Fetch and filter is done unaffected by the (recursive) level set.
Parameters
-
Model
$Model - Primary Model object.
-
Model
$LinkModel - Linked model object.
- string $type
- Association type, one of the model association types ie. hasMany.
- string $association
- Association name.
- array $assocData
- Association data.
- array $queryData
- $queryData An array of queryData information containing keys similar to Model::find().
- boolean $external
- Whether or not the association query is on an external datasource.
- array $resultSet
- $resultSet Existing results.
- integer $recursive
- Number of levels of association.
- array $stack
- A list with joined models.
Returns
Throws
rawQuery() public ¶
rawQuery( string $sql , array $params = array() )
Executes given SQL statement.
Parameters
- string $sql
- SQL statement
- array $params optional array()
- Additional options for the query.
Returns
Resource or object representing the result set, or false on failure
read() public ¶
read( Model
$Model , array $queryData = array() , integer $recursive = null )
The "R" in CRUD
Reads record(s) from the database.
Parameters
-
Model
$Model - A Model object that the query is for.
- array $queryData optional array()
- An array of queryData information containing keys similar to Model::find().
- integer $recursive optional null
- Number of levels of association
Returns
boolean false on error/failure. An array of results on success.
Overrides
readTableParameters() public ¶
readTableParameters( string $name )
Read additional table parameters
Parameters
- string $name
- The table name to read.
Returns
reconnect() public ¶
reconnect( array $config = array() )
Reconnects to database server with optional new settings
Parameters
- array $config optional array()
- An array defining the new configuration settings
Returns
True on success, false on failure
renderJoinStatement() public ¶
renderJoinStatement( array $data )
Renders a final SQL JOIN statement
Parameters
- array $data
- The data to generate a join statement for.
Returns
resolveKey() public ¶
resolveKey( Model
$Model , string $key , string $assoc = null )
Returns a key formatted like a string Model.fieldname(i.e. Post.title, or Country.name)
Parameters
-
Model
$Model - The model to get a key for.
- string $key
- The key field.
- string $assoc optional null
- The association name.
Returns
Overrides
rollback() public ¶
rollback( )
Rollback a transaction
Returns
True on success, false on fail (i.e. if the database/model does not support transactions, or a transaction has not started).
Overrides
showLog() public ¶
showLog( boolean $sorted = false )
Outputs the contents of the queries log. If in a non-CLI environment the sql_log element will be rendered and output. If in a CLI environment, a plain text log is generated.
Parameters
- boolean $sorted optional false
- Get the queries sorted by time taken, defaults to false.
update() public ¶
update( Model
$Model , array $fields = array() , array $values = null , mixed $conditions = null )
Generates and executes an SQL UPDATE statement for given model, fields, and values. For databases that do not support aliases in UPDATE queries.
Parameters
-
Model
$Model - The model to update.
- array $fields optional array()
- The fields to update
- array $values optional null
- The values fo the fields.
- mixed $conditions optional null
- The conditions for the update. When non-empty $values will not be quoted.
Returns
Success
Overrides
Methods inherited from DataSource
_cacheDescription() protected ¶
_cacheDescription( string $object , mixed $data = null )
Cache the DataSource description
Parameters
- string $object
- The name of the object (model) to cache
- mixed $data optional null
- The description of the model, usually a string or array
Returns
insertQueryData() public ¶
insertQueryData( string $query , array $data , string $association , Model
$Model , array $stack )
Replaces {$__cakeID__$}
and {$__cakeForeignKey__$}
placeholders in query data.
Parameters
- string $query
- Query string needing replacements done.
- array $data
- Array of data with values that will be inserted in placeholders.
- string $association
- Name of association model being replaced.
-
Model
$Model - Model instance.
- array $stack
- The context stack.
Returns
String of query data with placeholders replaced, or false on failure.
setConfig() public ¶
setConfig( array $config = array() )
Sets the configuration for the DataSource. Merges the $config information with the _baseConfig and the existing $config property.
Parameters
- array $config optional array()
- The configuration array
Methods inherited from CakeObject
_mergeVars() protected ¶
_mergeVars( array $properties , string $class , boolean $normalize = true )
Merges this objects $property with the property in $class' definition. This classes value for the property will be merged on top of $class'
This provides some of the DRY magic CakePHP provides. If you want to shut it off, redefine this method as an empty function.
Parameters
- array $properties
- The name of the properties to merge.
- string $class
- The class to merge the property with.
- boolean $normalize optional true
- Set to true to run the properties through Hash::normalize() before merging.
_set() protected ¶
_set( array $properties = array() )
Allows setting of multiple properties of the object in a single line of code. Will only set properties that are part of a class declaration.
Parameters
- array $properties optional array()
- An associative array containing properties and corresponding values.
_stop() protected ¶
_stop( integer|string $status = 0 )
Stop execution of the current script. Wraps exit() making testing easier.
Parameters
- integer|string $status optional 0
- see http://php.net/exit for values
dispatchMethod() public ¶
dispatchMethod( string $method , array $params = array() )
Calls a method on this object with the given parameters. Provides an OO wrapper
for call_user_func_array
Parameters
- string $method
- Name of the method to call
- array $params optional array()
- Parameter list to use when calling $method
Returns
Returns the result of the method call
log() public ¶
log( mixed $msg , integer $type = LOG_ERR , null|string|array $scope = null )
Convenience method to write a message to CakeLog. See CakeLog::write() for more information on writing to logs.
Parameters
- mixed $msg
- Log message
- integer $type optional LOG_ERR
- Error type constant. Defined in app/Config/core.php.
- null|string|array $scope optional null
The scope(s) a log message is being created in. See CakeLog::config() for more information on logging scopes.
Returns
Success of log write
requestAction() public ¶
requestAction( string|array $url , array $extra = array() )
Calls a controller's method from any location. Can be used to connect controllers together or tie plugins into a main application. requestAction can be used to return rendered views or fetch the return value from controller actions.
Under the hood this method uses Router::reverse() to convert the $url parameter into a string URL. You should use URL formats that are compatible with Router::reverse()
Passing POST and GET data
POST and GET data can be simulated in requestAction. Use $extra['url']
for
GET data. The $extra['data']
parameter allows POST data simulation.
Parameters
- string|array $url
String or array-based URL. Unlike other URL arrays in CakePHP, this URL will not automatically handle passed and named arguments in the $url parameter.
- array $extra optional array()
if array includes the key "return" it sets the AutoRender to true. Can also be used to submit GET/POST data, and named/passed arguments.
Returns
Boolean true or false on success/failure, or contents of rendered action if 'return' is set in $extra.
toString() public ¶
toString( )
CakeObject-to-string conversion. Each class can override this method as necessary.
Returns
The name of this class
Properties detail
$_baseConfig ¶
Base driver configuration settings. Merged with user settings.
array( 'persistent' => true, 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'cake', 'schema' => 'public', 'port' => 5432, 'encoding' => '', 'sslmode' => 'allow', 'flags' => array() )
$_sequenceMap ¶
Contains mappings of custom auto-increment sequences, if a table uses a sequence name other than what is dictated by convention.
array()
$_sqlOps ¶
The set of valid SQL operations usable in a WHERE statement
array('like', 'ilike', 'or', 'not', 'in', 'between', '~', '~\*', '\!~', '\!~\*', 'similar to')
$columns ¶
Columns
Link
array( 'primary_key' => array('name' => 'serial NOT NULL'), 'string' => array('name' => 'varchar', 'limit' => '255'), 'text' => array('name' => 'text'), 'integer' => array('name' => 'integer', 'formatter' => 'intval'), 'smallinteger' => array('name' => 'smallint', 'formatter' => 'intval'), 'tinyinteger' => array('name' => 'smallint', 'formatter' => 'intval'), 'biginteger' => array('name' => 'bigint', 'limit' => '20'), 'float' => array('name' => 'float', 'formatter' => 'floatval'), 'decimal' => array('name' => 'decimal', 'formatter' => 'floatval'), 'datetime' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'), 'timestamp' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'), 'time' => array('name' => 'time', 'format' => 'H:i:s', 'formatter' => 'date'), 'date' => array('name' => 'date', 'format' => 'Y-m-d', 'formatter' => 'date'), 'binary' => array('name' => 'bytea'), 'boolean' => array('name' => 'boolean'), 'number' => array('name' => 'numeric'), 'inet' => array('name' => 'inet'), 'uuid' => array('name' => 'uuid') )