PHP Class Granada\ORM

Copyright (c) 2013, Erik Wiesenthal All rights reserved http://github.com/Surt/Granada/ Idiorm with some small changes ( http://github.com/Surt/Granada/ ). Idiorm http://github.com/j4mie/idiorm/ A single-class super-simple database abstraction layer for PHP. Provides (nearly) zero-configuration object-relational mapping and a fluent interface for building basic, commonly-used queries. BSD Licensed. Copyright (c) 2010, Jamie Matthews All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Inheritance: implements ArrayAcces\ArrayAccess
Datei anzeigen Open project: surt/granada Class Usage Examples

Public Properties

Property Type Description
$resultSetClass name of the ResultSet Object

Protected Properties

Property Type Description
$_associative_results associative results flag
$_config Map of configuration settings
$_connection_name Key name of the connections in self::$_db used by this instance
$_data The data for a hydrated instance of the class
$_db Map of database connections, instances of the PDO class
$_default_config Class configuration
$_dirty_fields lifetime of the object
$_distinct Should the query include a DISTINCT keyword?
$_expr_fields Fields that are to be inserted in the DB raw
$_group_by GROUP BY
$_having_conditions HAVING
$_instance_id_column this instance only. Overrides the config settings.
$_is_new Is this a new object (has create() been called)?
$_is_raw_query Is this a raw query?
$_join_sources Join sources
$_last_query Last query run, only populated if logging is enabled
$_last_statement Reference to previously used PDOStatement object to enable low-level access, if needed
$_limit LIMIT
$_offset OFFSET
$_order_by ORDER BY
$_query_cache Query cache, only used if query caching is enabled
$_query_log Log of all queries run, mapped by connection key, only populated if logging is enabled
$_raw_parameters The raw query parameters
$_raw_query The raw query
$_result_columns Columns to select in the result
$_table_alias Alias for the table to be used in SELECT queries
$_table_name The name of the table the current ORM instance is associated with
$_using_default_result_columns Are we using the default result column or have these been manually changed?
$_values Values to be bound to the query
$_where_conditions Array of WHERE clauses

Public Methods

Method Description
__call ( string $name, array $arguments ) : ORM Magic method to capture calls to undefined class methods.
__callStatic ( string $name, array $arguments ) : ORM Magic method to capture calls to undefined static class methods.
__get ( $key ) --------------------- //
__isset ( $key )
__set ( $key, $value )
__unset ( $key )
_setup_limit_clause_style ( string $connection_name ) Detect and initialise the limit clause style ("SELECT TOP 5" / ".
as_array ( ) Return the raw data wrapped by this ORM instance as an associative array. Column names may optionally be supplied as arguments, if so, only those keys will be returned.
associative ( ) : ORM Set the ORM instance to return associative results sets
avg ( string $column ) Tell the ORM that you wish to execute a AVG query.
clear_cache ( ) Clear the query cache
configure ( string $key, mixed $value = null, string $connection_name = self::DEFAULT_CONNECTION ) Pass configuration settings to the class in the form of key/value pairs. As a shortcut, if the second argument is omitted and the key is a string, the setting is assumed to be the DSN string used by PDO to connect to the database (often, this will be the only configuration required to use Idiorm). If you have more than one setting you wish to configure, another shortcut is to pass an array of settings (and omit the second argument).
count ( $column = '*' ) Tell the ORM that you wish to execute a COUNT query.
create ( $data = null ) Create a new, empty instance of the class. Used to add a new row to your database. May optionally be passed an associative array of data to populate the instance. If so, all fields will be flagged as dirty so all will be saved to the database when save() is called.
delete ( ) Delete this record from the database
delete_many ( $join = false, $table = false ) Delete many records from the database Added: could delete many of a join query, if you define $join to true and the table where you want to delete the records
distinct ( ) Add a DISTINCT keyword before the list of columns in the SELECT query
find_array ( ) : array Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array, or an empty array if no rows were returned.
find_many ( ) : array | granada\ResultSet Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array of instances of the ORM class, or an empty array if no rows were returned.
find_one ( $id = null ) Tell the ORM that you are expecting a single result back from your query, and execute it. Will return a single instance of the ORM class, or false if no rows were returned.
find_result_set ( ) : granada\ResultSet Tell the ORM that you are expecting multiple results from your query, and execute it. Will return a result set object containing instances of the ORM class.
for_table ( string $table_name, string $connection_name = self::DEFAULT_CONNECTION ) : ORM Despite its slightly odd name, this is actually the factory method used to acquire instances of the class. It is named this way for the sake of a readable interface, ie ORM::for_table('table_name')->find_one()-> etc. As such, this will normally be the first method called in a chain.
force_all_dirty ( ) Force the ORM to flag all the fields in the $data array as "dirty" and therefore update them when save() is called.
full_outer_join ( string $table, string[] $constraint, $table_alias = null ) Add an FULL OUTER JOIN souce to the query
get ( $key ) Return the value of a property of this object (database row) or null if not present.
get_config ( string $key = null, string $connection_name = self::DEFAULT_CONNECTION ) Retrieve configuration options by key, or as whole array.
get_connection_names ( ) : array Get a list of the available connection names
get_db ( string $connection_name = self::DEFAULT_CONNECTION ) : PDO Returns the PDO instance used by the the ORM to communicate with the database. This can be called if any low-level DB access is required outside the class. If multiple connections are used, accepts an optional key name for the connection.
get_last_query ( null | string $connection_name = null ) : string Get the last query executed. Only works if the 'logging' config option is set to true. Otherwise this will return null. Returns last query from all connections if no connection_name is specified
get_last_statement ( ) : PDOStatement Returns the PDOStatement instance last used by any connection wrapped by the ORM.
get_query_log ( string $connection_name = self::DEFAULT_CONNECTION ) Get an array containing all the queries run on a specified connection up to now.
group_by ( string $column_name ) Add a column to the list of columns to GROUP BY
group_by_expr ( string $expr ) Add an unquoted expression to the list of columns to GROUP BY
having ( $column_name, $value ) Add a HAVING column = value clause to your query. Each time this is called in the chain, an additional HAVING will be added, and these will be ANDed together when the final query is built.
having_equal ( $column_name, $value ) More explicitly named version of for the having() method.
having_gt ( string $column_name, integer $value ) Add a HAVING .
having_gte ( string $column_name, integer $value ) Add a HAVING .
having_id_is ( $id ) Special method to query the table by its primary key
having_in ( string $column_name, string[] $values ) Add a HAVING .
having_like ( string $column_name, string $value ) Add a HAVING .
having_lt ( string $column_name, integer $value ) Add a HAVING .
having_lte ( string $column_name, integer $value ) Add a HAVING .
having_not_equal ( string $column_name, string $value ) Add a HAVING column != value clause to your query.
having_not_in ( string $column_name, string[] $values ) Add a HAVING .
having_not_like ( string $column_name, string $value ) Add where HAVING .
having_not_null ( string $column_name ) Add a HAVING column IS NOT NULL clause to your query
having_null ( string $column_name ) Add a HAVING column IS NULL clause to your query
having_raw ( string $clause, $parameters = [] ) Add a raw HAVING clause to the query. The clause should contain question mark placeholders, which will be bound to the parameters supplied in the second argument.
hydrate ( $data = [] ) This method can be called to hydrate (populate) this instance of the class from an associative array of data.
id ( ) Get the primary key ID of this object.
inner_join ( string $table, string[] $constraint, $table_alias = null ) Add an INNER JOIN souce to the query
is_dirty ( string $key ) Check whether the given field has been changed since this object was saved.
is_new ( ) : boolean Check whether the model was the result of a call to create() or not
join ( $table, $constraint, string $table_alias = null ) Add a simple JOIN source to the query
left_outer_join ( string $table, string[] $constraint, $table_alias = null ) Add a LEFT OUTER JOIN souce to the query
limit ( integer $limit ) Add a LIMIT to the query
list_dirty_fields ( ) List the dirty fields that need updating on next save
max ( string $column ) Tell the ORM that you wish to execute a MAX query.
min ( string $column ) Tell the ORM that you wish to execute a MIN query.
non_associative ( ) : ORM Set the ORM instance to return non associative results sets
offset ( integer $offset ) Add an OFFSET to the query
offsetExists ( $key ) --------------------- //
offsetGet ( $key )
offsetSet ( $key, $value )
offsetUnset ( $key )
order_by_asc ( boolean | string $column_name ) Add an ORDER BY column ASC clause
order_by_desc ( string $column_name ) Add an ORDER BY column DESC clause
order_by_expr ( string $clause ) Add an unquoted expression as an ORDER BY clause
raw_execute ( string $query, array $parameters = [], string $connection_name = self::DEFAULT_CONNECTION ) : boolean Executes a raw query as a wrapper for PDOStatement::execute.
raw_query ( string $query, $parameters = [] ) Perform a raw query. The query can contain placeholders in either named or question mark style. If placeholders are used, the parameters should be an array of values which will be bound to the placeholders in the query. If this method is called, all other query building methods will be ignored.
reset_associative ( ) : ORM Set the ORM instance to return associative (or not) results sets, as config dictates
reset_config ( ) Delete all configs in _config array.
reset_db ( ) Delete all registered PDO objects in _db array.
right_outer_join ( string $table, string[] $constraint, $table_alias = null ) Add an RIGHT OUTER JOIN souce to the query
save ( $ignore = false ) Save any fields which have been modified on this object to the database.
select ( $column, string $alias = null ) Add a column to the list of columns returned by the SELECT query. This defaults to '*'. The second optional argument is the alias to return the column as.
select_expr ( $expr, $alias = null ) Add an unquoted expression to the list of columns returned by the SELECT query. The second optional argument is the alias to return the column as.
select_many ( ) : ORM Add columns to the list of columns returned by the SELECT query. This defaults to '*'. Many columns can be supplied as either an array or as a list of parameters to the method.
select_many_expr ( ) : ORM Add an unquoted expression to the list of columns returned by the SELECT query. Many columns can be supplied as either an array or as a list of parameters to the method.
set ( $key, $value = null ) Set a property to a particular value on this object.
set_db ( PDO $db, string $connection_name = self::DEFAULT_CONNECTION ) Set the PDO object used by Idiorm to communicate with the database.
set_expr ( string | array $key, string | null $value = null ) Set a property to a particular value on this object.
sum ( string $column ) Tell the ORM that you wish to execute a SUM query.
table_alias ( string $alias ) Add an alias for the main table to be used in SELECT queries
use_id_column ( $id_column ) Specify the ID column to use for this instance or array of instances only.
where ( $column_name, $value ) Add a WHERE column = value clause to your query. Each time this is called in the chain, an additional WHERE will be added, and these will be ANDed together when the final query is built.
where_equal ( $column_name, $value ) More explicitly named version of for the where() method.
where_gt ( string $column_name, integer $value ) Add a WHERE .
where_gte ( string $column_name, integer $value ) Add a WHERE .
where_id_is ( $id ) Special method to query the table by its primary key
where_in ( $column_name, $values ) Add a WHERE .
where_like ( string $column_name, string $value ) Add a WHERE .
where_lt ( string $column_name, integer $value ) Add a WHERE .
where_lte ( string $column_name, integer $value ) Add a WHERE .
where_not_equal ( string $column_name, string $value ) Add a WHERE column != value clause to your query.
where_not_in ( string $column_name, string[] $values ) Add a WHERE .
where_not_like ( string $column_name, string $value ) Add where WHERE .
where_not_null ( string $column_name ) Add a WHERE column IS NOT NULL clause to your query
where_null ( string $column_name ) Add a WHERE column IS NULL clause to your query
where_raw ( string $clause, $parameters = [] ) Add a raw WHERE clause to the query. The clause should contain question mark placeholders, which will be bound to the parameters supplied in the second argument.

Protected Methods

Method Description
__construct ( $table_name, $data = [], $connection_name = self::DEFAULT_CONNECTION ) "Private" constructor; shouldn't be called directly.
_add_condition ( $type, $fragment, $values = [] ) Internal method to add a HAVING or WHERE condition to the query
_add_having ( $fragment, $values = [] ) Internal method to add a HAVING condition to the query
_add_join_source ( string $join_operator, $table, $constraint, $table_alias = null ) Internal method to add a JOIN source to the query.
_add_order_by ( $column_name, string $ordering ) Add an ORDER BY clause to the query
_add_result_column ( $expr, $alias = null ) Internal method to add an unquoted expression to the set of columns returned by the SELECT query. The second optional argument is the alias to return the expression as.
_add_simple_condition ( string $type, $column_name, $separator, $value ) Helper method to compile a simple COLUMN SEPARATOR VALUE style HAVING or WHERE condition into a string and value ready to be passed to the _add_condition method. Avoids duplication of the call to _quote_identifier
_add_simple_having ( $column_name, string $separator, $value ) Internal method to add a HAVING condition to the query
_add_simple_where ( $column_name, string $separator, $value ) Internal method to add a WHERE condition to the query
_add_where ( $fragment, $values = [] ) Internal method to add a WHERE condition to the query
_build_conditions ( string $type ) : string Build a WHERE or HAVING clause
_build_group_by ( ) Build GROUP BY
_build_having ( ) Build the HAVING clause(s)
_build_insert ( ) Build an INSERT query
_build_insert_update ( ) Added: Build an INSERT ON DUPLICATE KEY UPDATE query Attention: This method only works on Mysql Databases
_build_join ( ) Build the JOIN sources
_build_limit ( ) Build LIMIT
_build_offset ( ) Build OFFSET
_build_order_by ( ) Build ORDER BY
_build_select ( ) Build a SELECT statement based on the clauses that have been passed to this instance by chaining method calls.
_build_select_start ( ) Build the start of the SELECT statement
_build_update ( ) Build an UPDATE query
_build_where ( ) Build the WHERE clause(s)
_cache_query_result ( string $cache_key, $value, $connection_name = self::DEFAULT_CONNECTION ) Add the given value to the query cache.
_call_aggregate_db_function ( string $sql_function, string $column ) : integer Execute an aggregate query on the current connection.
_check_query_cache ( string $cache_key, $connection_name = self::DEFAULT_CONNECTION ) Check the query cache for the given cache key. If a value is cached for the key, return the value. Otherwise, return false.
_create_cache_key ( $query, $parameters ) Create a cache key for the given query and parameters.
_create_instance_from_row ( $row ) Create an ORM instance from the given row (an associative array of data fetched from the database)
_create_placeholders ( $fields ) Return a string containing the given number of question marks, separated by commas. Eg "?, ?, ?"
_detect_identifier_quote_character ( string $connection_name ) : string Return the correct character used to quote identifiers (table names, column names etc) by looking at the driver being used by PDO.
_detect_limit_clause_style ( string $connection_name ) : string Returns a constant after determining the appropriate limit clause style
_execute ( string $query, array $parameters = [], string $connection_name = self::DEFAULT_CONNECTION ) : boolean Internal helper method for executing statments. Logs queries, and stores statement object in ::_last_statment, accessible publicly through ::get_last_statement()
_find_many ( $associative = true ) : array Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array of instances of the ORM class, or an empty array if no rows were returned.
_get_id_column_name ( ) Return the name of the column in the database table which contains the primary key ID of the row.
_get_instances ( array $rows ) : array Create instances of each row in the result and map them to an associative array with the primary IDs as the array keys.
_join_if_not_empty ( string $glue, $pieces ) : string Wrapper around PHP's join function which only adds the pieces if they are not empty.
_log_query ( string $query, array $parameters, string $connection_name ) : boolean Add a query to the internal query log. Only works if the 'logging' config option is set to true.
_normalise_select_many_columns ( array $columns ) : array Take a column specification for the select many methods and convert it into a normalised array of columns and aliases.
_quote_identifier ( $identifier ) Quote a string that is used as an identifier (table names, column names etc). This method can also deal with dot-separated identifiers eg table.column
_quote_identifier_part ( $part ) This method performs the actual quoting of a single part of an identifier, using the identifier quote character specified in the config (or autodetected).
_run ( ) Execute the SELECT query that has been built up by chaining methods on this class. Return an array of rows as associative arrays.
_set_orm_property ( string | array $key, string | null $value = null, $expr = false ) Set a property on the ORM object.
_setup_db ( string $connection_name = self::DEFAULT_CONNECTION ) Set up the database connection used by the class
_setup_db_config ( string $connection_name ) Ensures configuration (mulitple connections) is at least set to default.
_setup_identifier_quote_character ( string $connection_name ) Detect and initialise the character used to quote identifiers (table names, column names etc). If this has been specified manually using ORM::configure('identifier_quote_character', 'some-char'), this will do nothing.
reset ( ) reset Idiorm after executing the query

Method Details

__call() public method

In this case we are attempting to convert camel case formatted methods into underscore formatted methods. This allows us to call ORM methods using camel case and remain backwards compatible.
public __call ( string $name, array $arguments ) : ORM
$name string
$arguments array
return ORM

__callStatic() public static method

In this case we are attempting to convert camel case formatted methods into underscore formatted methods. This allows us to call ORM methods using camel case and remain backwards compatible.
public static __callStatic ( string $name, array $arguments ) : ORM
$name string
$arguments array
return ORM

__construct() protected method

Use the ORM::for_table factory method instead.
protected __construct ( $table_name, $data = [], $connection_name = self::DEFAULT_CONNECTION )

__get() public method

--------------------- //
public __get ( $key )

__isset() public method

public __isset ( $key )

__set() public method

public __set ( $key, $value )

__unset() public method

public __unset ( $key )

_add_condition() protected method

Internal method to add a HAVING or WHERE condition to the query
protected _add_condition ( $type, $fragment, $values = [] )

_add_having() protected method

Internal method to add a HAVING condition to the query
protected _add_having ( $fragment, $values = [] )

_add_join_source() protected method

The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN. The table should be the name of the table to join to. The constraint may be either a string or an array with three elements. If it is a string, it will be compiled into the query as-is, with no escaping. The recommended way to supply the constraint is as an array with three elements: first_column, operator, second_column Example: array('user.id', '=', 'profile.user_id') will compile to ON user.id = profile.user_id The final (optional) argument specifies an alias for the joined table.
protected _add_join_source ( string $join_operator, $table, $constraint, $table_alias = null )
$join_operator string

_add_order_by() protected method

Add an ORDER BY clause to the query
protected _add_order_by ( $column_name, string $ordering )
$ordering string

_add_result_column() protected method

Internal method to add an unquoted expression to the set of columns returned by the SELECT query. The second optional argument is the alias to return the expression as.
protected _add_result_column ( $expr, $alias = null )

_add_simple_condition() protected method

Helper method to compile a simple COLUMN SEPARATOR VALUE style HAVING or WHERE condition into a string and value ready to be passed to the _add_condition method. Avoids duplication of the call to _quote_identifier
protected _add_simple_condition ( string $type, $column_name, $separator, $value )
$type string

_add_simple_having() protected method

Internal method to add a HAVING condition to the query
protected _add_simple_having ( $column_name, string $separator, $value )
$separator string

_add_simple_where() protected method

Internal method to add a WHERE condition to the query
protected _add_simple_where ( $column_name, string $separator, $value )
$separator string

_add_where() protected method

Internal method to add a WHERE condition to the query
protected _add_where ( $fragment, $values = [] )

_build_conditions() protected method

Build a WHERE or HAVING clause
protected _build_conditions ( string $type ) : string
$type string
return string

_build_group_by() protected method

Build GROUP BY
protected _build_group_by ( )

_build_having() protected method

Build the HAVING clause(s)
protected _build_having ( )

_build_insert() protected method

Build an INSERT query
protected _build_insert ( )

_build_insert_update() protected method

Added: Build an INSERT ON DUPLICATE KEY UPDATE query Attention: This method only works on Mysql Databases
protected _build_insert_update ( )

_build_join() protected method

Build the JOIN sources
protected _build_join ( )

_build_limit() protected method

Build LIMIT
protected _build_limit ( )

_build_offset() protected method

Build OFFSET
protected _build_offset ( )

_build_order_by() protected method

Build ORDER BY
protected _build_order_by ( )

_build_select() protected method

Build a SELECT statement based on the clauses that have been passed to this instance by chaining method calls.
protected _build_select ( )

_build_select_start() protected method

Build the start of the SELECT statement
protected _build_select_start ( )

_build_update() protected method

Build an UPDATE query
protected _build_update ( )

_build_where() protected method

Build the WHERE clause(s)
protected _build_where ( )

_cache_query_result() protected static method

Add the given value to the query cache.
protected static _cache_query_result ( string $cache_key, $value, $connection_name = self::DEFAULT_CONNECTION )
$cache_key string

_call_aggregate_db_function() protected method

Execute an aggregate query on the current connection.
protected _call_aggregate_db_function ( string $sql_function, string $column ) : integer
$sql_function string The aggregate function to call eg. MIN, COUNT, etc
$column string The column to execute the aggregate query against
return integer

_check_query_cache() protected static method

Check the query cache for the given cache key. If a value is cached for the key, return the value. Otherwise, return false.
protected static _check_query_cache ( string $cache_key, $connection_name = self::DEFAULT_CONNECTION )
$cache_key string

_create_cache_key() protected static method

Create a cache key for the given query and parameters.
protected static _create_cache_key ( $query, $parameters )

_create_instance_from_row() protected method

Create an ORM instance from the given row (an associative array of data fetched from the database)
protected _create_instance_from_row ( $row )

_create_placeholders() protected method

Return a string containing the given number of question marks, separated by commas. Eg "?, ?, ?"
protected _create_placeholders ( $fields )

_detect_identifier_quote_character() protected static method

Return the correct character used to quote identifiers (table names, column names etc) by looking at the driver being used by PDO.
protected static _detect_identifier_quote_character ( string $connection_name ) : string
$connection_name string Which connection to use
return string

_detect_limit_clause_style() protected static method

Returns a constant after determining the appropriate limit clause style
protected static _detect_limit_clause_style ( string $connection_name ) : string
$connection_name string Which connection to use
return string Limit clause style keyword/constant

_execute() protected static method

Internal helper method for executing statments. Logs queries, and stores statement object in ::_last_statment, accessible publicly through ::get_last_statement()
protected static _execute ( string $query, array $parameters = [], string $connection_name = self::DEFAULT_CONNECTION ) : boolean
$query string
$parameters array An array of parameters to be bound in to the query
$connection_name string Which connection to use
return boolean Response of PDOStatement::execute()

_find_many() protected method

Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array of instances of the ORM class, or an empty array if no rows were returned.
protected _find_many ( $associative = true ) : array
return array

_get_id_column_name() protected method

Return the name of the column in the database table which contains the primary key ID of the row.
protected _get_id_column_name ( )

_get_instances() protected method

Create instances of each row in the result and map them to an associative array with the primary IDs as the array keys.
protected _get_instances ( array $rows ) : array
$rows array
return array

_join_if_not_empty() protected method

Wrapper around PHP's join function which only adds the pieces if they are not empty.
protected _join_if_not_empty ( string $glue, $pieces ) : string
$glue string
return string

_log_query() protected static method

This works by manually binding the parameters to the query - the query isn't executed like this (PDO normally passes the query and parameters to the database which takes care of the binding) but doing it this way makes the logged queries more readable.
protected static _log_query ( string $query, array $parameters, string $connection_name ) : boolean
$query string
$parameters array An array of parameters to be bound in to the query
$connection_name string Which connection to use
return boolean

_normalise_select_many_columns() protected method

It is designed to turn the following styles into a normalised array: array(array('alias' => 'column', 'column2', 'alias2' => 'column3'), 'column4', 'column5'))
protected _normalise_select_many_columns ( array $columns ) : array
$columns array
return array

_quote_identifier() protected method

Quote a string that is used as an identifier (table names, column names etc). This method can also deal with dot-separated identifiers eg table.column
protected _quote_identifier ( $identifier )

_quote_identifier_part() protected method

This method performs the actual quoting of a single part of an identifier, using the identifier quote character specified in the config (or autodetected).
protected _quote_identifier_part ( $part )

_run() protected method

Execute the SELECT query that has been built up by chaining methods on this class. Return an array of rows as associative arrays.
protected _run ( )

_set_orm_property() protected method

Set a property on the ORM object.
protected _set_orm_property ( string | array $key, string | null $value = null, $expr = false )
$key string | array
$value string | null

_setup_db() protected static method

Set up the database connection used by the class
protected static _setup_db ( string $connection_name = self::DEFAULT_CONNECTION )
$connection_name string Which connection to use

_setup_db_config() protected static method

Ensures configuration (mulitple connections) is at least set to default.
protected static _setup_db_config ( string $connection_name )
$connection_name string Which connection to use

_setup_identifier_quote_character() protected static method

Detect and initialise the character used to quote identifiers (table names, column names etc). If this has been specified manually using ORM::configure('identifier_quote_character', 'some-char'), this will do nothing.
protected static _setup_identifier_quote_character ( string $connection_name )
$connection_name string Which connection to use

_setup_limit_clause_style() public static method

.. LIMIT 5"). If this has been specified manually using ORM::configure('limit_clause_style', 'top'), this will do nothing.
public static _setup_limit_clause_style ( string $connection_name )
$connection_name string Which connection to use

as_array() public method

Return the raw data wrapped by this ORM instance as an associative array. Column names may optionally be supplied as arguments, if so, only those keys will be returned.
public as_array ( )

associative() public method

Set the ORM instance to return associative results sets
public associative ( ) : ORM
return ORM instance

avg() public method

Will return the average value of the choosen column.
public avg ( string $column )
$column string

clear_cache() public static method

Clear the query cache
public static clear_cache ( )

configure() public static method

Pass configuration settings to the class in the form of key/value pairs. As a shortcut, if the second argument is omitted and the key is a string, the setting is assumed to be the DSN string used by PDO to connect to the database (often, this will be the only configuration required to use Idiorm). If you have more than one setting you wish to configure, another shortcut is to pass an array of settings (and omit the second argument).
public static configure ( string $key, mixed $value = null, string $connection_name = self::DEFAULT_CONNECTION )
$key string
$value mixed
$connection_name string Which connection to use

count() public method

Will return an integer representing the number of rows returned.
public count ( $column = '*' )

create() public method

Create a new, empty instance of the class. Used to add a new row to your database. May optionally be passed an associative array of data to populate the instance. If so, all fields will be flagged as dirty so all will be saved to the database when save() is called.
public create ( $data = null )

delete() public method

Delete this record from the database
public delete ( )

delete_many() public method

Delete many records from the database Added: could delete many of a join query, if you define $join to true and the table where you want to delete the records
public delete_many ( $join = false, $table = false )

distinct() public method

Add a DISTINCT keyword before the list of columns in the SELECT query
public distinct ( )

find_array() public method

Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array, or an empty array if no rows were returned.
public find_array ( ) : array
return array

find_many() public method

Tell the ORM that you are expecting multiple results from your query, and execute it. Will return an array of instances of the ORM class, or an empty array if no rows were returned.
public find_many ( ) : array | granada\ResultSet
return array | granada\ResultSet

find_one() public method

As a shortcut, you may supply an ID as a parameter to this method. This will perform a primary key lookup on the table.
public find_one ( $id = null )

find_result_set() public method

Tell the ORM that you are expecting multiple results from your query, and execute it. Will return a result set object containing instances of the ORM class.
public find_result_set ( ) : granada\ResultSet
return granada\ResultSet

for_table() public static method

Despite its slightly odd name, this is actually the factory method used to acquire instances of the class. It is named this way for the sake of a readable interface, ie ORM::for_table('table_name')->find_one()-> etc. As such, this will normally be the first method called in a chain.
public static for_table ( string $table_name, string $connection_name = self::DEFAULT_CONNECTION ) : ORM
$table_name string
$connection_name string Which connection to use
return ORM

force_all_dirty() public method

Force the ORM to flag all the fields in the $data array as "dirty" and therefore update them when save() is called.
public force_all_dirty ( )

full_outer_join() public method

Add an FULL OUTER JOIN souce to the query
public full_outer_join ( string $table, string[] $constraint, $table_alias = null )
$table string
$constraint string[]

get() public method

Return the value of a property of this object (database row) or null if not present.
public get ( $key )

get_config() public static method

Retrieve configuration options by key, or as whole array.
public static get_config ( string $key = null, string $connection_name = self::DEFAULT_CONNECTION )
$key string
$connection_name string Which connection to use

get_connection_names() public static method

Get a list of the available connection names
public static get_connection_names ( ) : array
return array

get_db() public static method

Returns the PDO instance used by the the ORM to communicate with the database. This can be called if any low-level DB access is required outside the class. If multiple connections are used, accepts an optional key name for the connection.
public static get_db ( string $connection_name = self::DEFAULT_CONNECTION ) : PDO
$connection_name string Which connection to use
return PDO

get_last_query() public static method

Get the last query executed. Only works if the 'logging' config option is set to true. Otherwise this will return null. Returns last query from all connections if no connection_name is specified
public static get_last_query ( null | string $connection_name = null ) : string
$connection_name null | string Which connection to use
return string

get_last_statement() public static method

Useful for access to PDOStatement::rowCount() or error information
public static get_last_statement ( ) : PDOStatement
return PDOStatement

get_query_log() public static method

Only works if the 'logging' config option is set to true. Otherwise, returned array will be empty.
public static get_query_log ( string $connection_name = self::DEFAULT_CONNECTION )
$connection_name string Which connection to use

group_by() public method

Add a column to the list of columns to GROUP BY
public group_by ( string $column_name )
$column_name string

group_by_expr() public method

Add an unquoted expression to the list of columns to GROUP BY
public group_by_expr ( string $expr )
$expr string

having() public method

Add a HAVING column = value clause to your query. Each time this is called in the chain, an additional HAVING will be added, and these will be ANDed together when the final query is built.
public having ( $column_name, $value )

having_equal() public method

Can be used if preferred.
public having_equal ( $column_name, $value )

having_gt() public method

.. > clause to your query
public having_gt ( string $column_name, integer $value )
$column_name string
$value integer

having_gte() public method

.. >= clause to your query
public having_gte ( string $column_name, integer $value )
$column_name string
$value integer

having_id_is() public method

Special method to query the table by its primary key
public having_id_is ( $id )

having_in() public method

.. IN clause to your query
public having_in ( string $column_name, string[] $values )
$column_name string
$values string[]

having_like() public method

.. LIKE clause to your query.
public having_like ( string $column_name, string $value )
$column_name string
$value string

having_lt() public method

.. < clause to your query
public having_lt ( string $column_name, integer $value )
$column_name string
$value integer

having_lte() public method

.. <= clause to your query
public having_lte ( string $column_name, integer $value )
$column_name string
$value integer

having_not_equal() public method

Add a HAVING column != value clause to your query.
public having_not_equal ( string $column_name, string $value )
$column_name string
$value string

having_not_in() public method

.. NOT IN clause to your query
public having_not_in ( string $column_name, string[] $values )
$column_name string
$values string[]

having_not_like() public method

.. NOT LIKE clause to your query.
public having_not_like ( string $column_name, string $value )
$column_name string
$value string

having_not_null() public method

Add a HAVING column IS NOT NULL clause to your query
public having_not_null ( string $column_name )
$column_name string

having_null() public method

Add a HAVING column IS NULL clause to your query
public having_null ( string $column_name )
$column_name string

having_raw() public method

Add a raw HAVING clause to the query. The clause should contain question mark placeholders, which will be bound to the parameters supplied in the second argument.
public having_raw ( string $clause, $parameters = [] )
$clause string

hydrate() public method

This will usually be called only from inside the class, but it's public in case you need to call it directly.
public hydrate ( $data = [] )

id() public method

Get the primary key ID of this object.
public id ( )

inner_join() public method

Add an INNER JOIN souce to the query
public inner_join ( string $table, string[] $constraint, $table_alias = null )
$table string
$constraint string[]

is_dirty() public method

Check whether the given field has been changed since this object was saved.
public is_dirty ( string $key )
$key string

is_new() public method

Check whether the model was the result of a call to create() or not
public is_new ( ) : boolean
return boolean

join() public method

Add a simple JOIN source to the query
public join ( $table, $constraint, string $table_alias = null )
$table_alias string

left_outer_join() public method

Add a LEFT OUTER JOIN souce to the query
public left_outer_join ( string $table, string[] $constraint, $table_alias = null )
$table string
$constraint string[]

limit() public method

Add a LIMIT to the query
public limit ( integer $limit )
$limit integer

list_dirty_fields() public method

List the dirty fields that need updating on next save
public list_dirty_fields ( )

max() public method

Will return the max value of the choosen column.
public max ( string $column )
$column string

min() public method

Will return the min value of the choosen column.
public min ( string $column )
$column string

non_associative() public method

Set the ORM instance to return non associative results sets
public non_associative ( ) : ORM
return ORM instance

offset() public method

Add an OFFSET to the query
public offset ( integer $offset )
$offset integer

offsetExists() public method

--------------------- //
public offsetExists ( $key )

offsetGet() public method

public offsetGet ( $key )

offsetSet() public method

public offsetSet ( $key, $value )

offsetUnset() public method

public offsetUnset ( $key )

order_by_asc() public method

Add an ORDER BY column ASC clause
public order_by_asc ( boolean | string $column_name )
$column_name boolean | string

order_by_desc() public method

Add an ORDER BY column DESC clause
public order_by_desc ( string $column_name )
$column_name string

order_by_expr() public method

Add an unquoted expression as an ORDER BY clause
public order_by_expr ( string $clause )
$clause string

raw_execute() public static method

Useful for queries that can't be accomplished through Idiorm, particularly those using engine-specific features.
public static raw_execute ( string $query, array $parameters = [], string $connection_name = self::DEFAULT_CONNECTION ) : boolean
$query string The raw SQL query
$parameters array Optional bound parameters
$connection_name string Which connection to use
return boolean Success

raw_query() public method

Perform a raw query. The query can contain placeholders in either named or question mark style. If placeholders are used, the parameters should be an array of values which will be bound to the placeholders in the query. If this method is called, all other query building methods will be ignored.
public raw_query ( string $query, $parameters = [] )
$query string

reset() protected method

reset Idiorm after executing the query
protected reset ( )

reset_associative() public method

Set the ORM instance to return associative (or not) results sets, as config dictates
public reset_associative ( ) : ORM
return ORM instance

reset_config() public static method

Delete all configs in _config array.
public static reset_config ( )

reset_db() public static method

Delete all registered PDO objects in _db array.
public static reset_db ( )

right_outer_join() public method

Add an RIGHT OUTER JOIN souce to the query
public right_outer_join ( string $table, string[] $constraint, $table_alias = null )
$table string
$constraint string[]

save() public method

Added: on duplicate key update, only for mysql If you want to insert a record, or update it if any of the unique keys already exists on db
public save ( $ignore = false )

select() public method

Add a column to the list of columns returned by the SELECT query. This defaults to '*'. The second optional argument is the alias to return the column as.
public select ( $column, string $alias = null )
$alias string

select_expr() public method

Add an unquoted expression to the list of columns returned by the SELECT query. The second optional argument is the alias to return the column as.
public select_expr ( $expr, $alias = null )

select_many() public method

Note that the alias must not be numeric - if you want a numeric alias then prepend it with some alpha chars. eg. a1
public select_many ( ) : ORM
return ORM

select_many_expr() public method

Note that the alias must not be numeric - if you want a numeric alias then prepend it with some alpha chars. eg. a1
public select_many_expr ( ) : ORM
return ORM

set() public method

To set multiple properties at once, pass an associative array as the first parameter and leave out the second parameter. Flags the properties as 'dirty' so they will be saved to the database when save() is called.
public set ( $key, $value = null )

set_db() public static method

This is public in case the ORM should use a ready-instantiated PDO object as its database connection. Accepts an optional string key to identify the connection if multiple connections are used.
public static set_db ( PDO $db, string $connection_name = self::DEFAULT_CONNECTION )
$db PDO
$connection_name string Which connection to use

set_expr() public method

To set multiple properties at once, pass an associative array as the first parameter and leave out the second parameter. Flags the properties as 'dirty' so they will be saved to the database when save() is called.
public set_expr ( string | array $key, string | null $value = null )
$key string | array
$value string | null

sum() public method

Will return the sum of the choosen column.
public sum ( string $column )
$column string

table_alias() public method

Add an alias for the main table to be used in SELECT queries
public table_alias ( string $alias )
$alias string

use_id_column() public method

This overrides the id_column and id_column_overrides settings. This is mostly useful for libraries built on top of Idiorm, and will not normally be used in manually built queries. If you don't know why you would want to use this, you should probably just ignore it.
public use_id_column ( $id_column )

where() public method

Add a WHERE column = value clause to your query. Each time this is called in the chain, an additional WHERE will be added, and these will be ANDed together when the final query is built.
public where ( $column_name, $value )

where_equal() public method

Can be used if preferred.
public where_equal ( $column_name, $value )

where_gt() public method

.. > clause to your query
public where_gt ( string $column_name, integer $value )
$column_name string
$value integer

where_gte() public method

.. >= clause to your query
public where_gte ( string $column_name, integer $value )
$column_name string
$value integer

where_id_is() public method

Special method to query the table by its primary key
public where_id_is ( $id )

where_in() public method

.. IN clause to your query
public where_in ( $column_name, $values )

where_like() public method

.. LIKE clause to your query.
public where_like ( string $column_name, string $value )
$column_name string
$value string

where_lt() public method

.. < clause to your query
public where_lt ( string $column_name, integer $value )
$column_name string
$value integer

where_lte() public method

.. <= clause to your query
public where_lte ( string $column_name, integer $value )
$column_name string
$value integer

where_not_equal() public method

Add a WHERE column != value clause to your query.
public where_not_equal ( string $column_name, string $value )
$column_name string
$value string

where_not_in() public method

.. NOT IN clause to your query
public where_not_in ( string $column_name, string[] $values )
$column_name string
$values string[]

where_not_like() public method

.. NOT LIKE clause to your query.
public where_not_like ( string $column_name, string $value )
$column_name string
$value string

where_not_null() public method

Add a WHERE column IS NOT NULL clause to your query
public where_not_null ( string $column_name )
$column_name string

where_null() public method

Add a WHERE column IS NULL clause to your query
public where_null ( string $column_name )
$column_name string

where_raw() public method

Add a raw WHERE clause to the query. The clause should contain question mark placeholders, which will be bound to the parameters supplied in the second argument.
public where_raw ( string $clause, $parameters = [] )
$clause string

Property Details

$_associative_results protected_oe property

associative results flag
protected $_associative_results

$_config protected_oe static_oe property

Map of configuration settings
protected static $_config

$_connection_name protected_oe property

Key name of the connections in self::$_db used by this instance
protected $_connection_name

$_data protected_oe property

The data for a hydrated instance of the class
protected $_data

$_db protected_oe static_oe property

Map of database connections, instances of the PDO class
protected static $_db

$_default_config protected_oe static_oe property

Class configuration
protected static $_default_config

$_dirty_fields protected_oe property

lifetime of the object
protected $_dirty_fields

$_distinct protected_oe property

Should the query include a DISTINCT keyword?
protected $_distinct

$_expr_fields protected_oe property

Fields that are to be inserted in the DB raw
protected $_expr_fields

$_group_by protected_oe property

GROUP BY
protected $_group_by

$_having_conditions protected_oe property

HAVING
protected $_having_conditions

$_instance_id_column protected_oe property

this instance only. Overrides the config settings.
protected $_instance_id_column

$_is_new protected_oe property

Is this a new object (has create() been called)?
protected $_is_new

$_is_raw_query protected_oe property

Is this a raw query?
protected $_is_raw_query

$_join_sources protected_oe property

Join sources
protected $_join_sources

$_last_query protected_oe static_oe property

Last query run, only populated if logging is enabled
protected static $_last_query

$_last_statement protected_oe static_oe property

Reference to previously used PDOStatement object to enable low-level access, if needed
protected static $_last_statement

$_limit protected_oe property

LIMIT
protected $_limit

$_offset protected_oe property

OFFSET
protected $_offset

$_order_by protected_oe property

ORDER BY
protected $_order_by

$_query_cache protected_oe static_oe property

Query cache, only used if query caching is enabled
protected static $_query_cache

$_query_log protected_oe static_oe property

Log of all queries run, mapped by connection key, only populated if logging is enabled
protected static $_query_log

$_raw_parameters protected_oe property

The raw query parameters
protected $_raw_parameters

$_raw_query protected_oe property

The raw query
protected $_raw_query

$_result_columns protected_oe property

Columns to select in the result
protected $_result_columns

$_table_alias protected_oe property

Alias for the table to be used in SELECT queries
protected $_table_alias

$_table_name protected_oe property

The name of the table the current ORM instance is associated with
protected $_table_name

$_using_default_result_columns protected_oe property

Are we using the default result column or have these been manually changed?
protected $_using_default_result_columns

$_values protected_oe property

Values to be bound to the query
protected $_values

$_where_conditions protected_oe property

Array of WHERE clauses
protected $_where_conditions

$resultSetClass public_oe property

name of the ResultSet Object
public $resultSetClass