Permission (class)
Class Permission
Permissions linking AROs with ACOs
- Object
-
Model implements CakeEventListener
-
AppModel
-
Permission
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Location: Cake/Model/Permission.php
Properties summary
-
$actsAs
publicNo behaviors for this modelarray
-
$belongsTo
publicPermissions link AROs with ACOsarray
-
$cacheQueries
publicExplicitly disable in-memory query cachingboolean
-
$useTable
publicOverride default table namestring
Inherited Properties
-
Behaviors
,__backAssociation
,__backContainableAssociation
,__backInnerAssociation
,__backOriginalAssociation
,__safeUpdateMode
,_associationKeys
,_associations
,_eventManager
,_insertID
,_schema
,_sourceConfigured
,_validator
,alias
,cacheSources
,data
,displayField
,findMethods
,findQueryType
,hasAndBelongsToMany
,hasMany
,hasOne
,id
,name
,order
,plugin
,primaryKey
,recursive
,schemaName
,table
,tablePrefix
,tableToModel
,useConsistentAfterFind
,useDbConfig
,validate
,validationDomain
,validationErrors
,virtualFields
,whitelist
Method Summary
- __construct() public
Constructor, used to tell this model to use the database configured for ACL
- allow() publicAllow $aro to have access to action $actions in $aco
- check() publicChecks if the given $aro has access to action $action in $aco
- getAclLink() publicGet an array of access-control links between the given Aro and Aco
- getAcoKeys() publicGet the crud type keys
Method Detail
__construct()source public
__construct( )
Constructor, used to tell this model to use the database configured for ACL
Overrides
Model::__construct()
allow()source public
allow( string $aro , string $aco , string $actions '*' , integer $value 1 )
Allow $aro to have access to action $actions in $aco
Parameters
- string
$aro
- ARO The requesting object identifier.
- string
$aco
- ACO The controlled object identifier.
- string
$actions
optional '*' - Action (defaults to *) Invalid permissions will result in an exception
- integer
$value
optional 1 - Value to indicate access type (1 to give access, -1 to deny, 0 to inherit)
Returns
booleanSuccess
Throws
AclException
on Invalid permission key.
check()source public
check( string $aro , string $aco , string $action '*' )
Checks if the given $aro has access to action $action in $aco
Parameters
- string
$aro
- ARO The requesting object identifier.
- string
$aco
- ACO The controlled object identifier.
- string
$action
optional '*' - Action (defaults to *)
Returns
booleanSuccess (true if ARO has access to action in ACO, false otherwise)
getAclLink()source public
getAclLink( string $aro , string $aco )
Get an array of access-control links between the given Aro and Aco
Parameters
- string
$aro
- ARO The requesting object identifier.
- string
$aco
- ACO The controlled object identifier.
Returns
arrayIndexed array with: 'aro', 'aco' and 'link'
getAcoKeys()source public
getAcoKeys( array $keys )
Get the crud type keys
Parameters
- array
$keys
- Permission schema
Returns
arraypermission keys
Methods inherited from Model
__call()source public
__call( string $method , array $params )
Handles custom method calls, like findBy
Parameters
- string
$method
- Name of method to call.
- array
$params
- Parameters for the method.
Returns
mixedWhatever is returned by called method
__get()source public
__get( string $name )
Returns the value of the requested variable if it can be set by __isset()
Parameters
- string
$name
- variable requested for it's value or reference
Returns
mixedvalue of requested variable if it is set
__isset()source public
__isset( string $name )
Handles the lazy loading of model associations by looking in the association arrays for the requested variable
Parameters
- string
$name
- variable tested for existence in class
Returns
booleantrue if the variable exists (if is a not loaded model association it will be created), false otherwise
_addToWhiteList()source protected
_addToWhiteList( string $key , array $options )
Helper method for saveAll() and friends, to add foreign key to fieldlist
Parameters
- string
$key
- fieldname to be added to list
- array
$options
- Options list
Returns
arrayoptions
_clearCache()source protected
_clearCache( string $type null )
Clears cache for this model.
Parameters
- string
$type
optional null If null this deletes cached views if Cache.check is true Will be used to allow deleting query cache also
Returns
mixedTrue on delete, null otherwise
_collectForeignKeys()source protected
_collectForeignKeys( string $type 'belongsTo' )
Collects foreign keys from associations.
Parameters
- string
$type
optional 'belongsTo' - Association type.
Returns
array_constructLinkedModel()source protected
_constructLinkedModel( string $assoc , string $className null , string $plugin null )
Protected helper method to create associated models of a given class.
Parameters
- string
$assoc
- Association name
- string
$className
optional null - Class name
- string
$plugin
optional null -
name of the plugin where $className is located examples: public $hasMany = array('Assoc' => array('className' => 'ModelName')); usage: $this->Assoc->modelMethods();
public $hasMany = array('ModelName'); usage: $this->ModelName->modelMethods();
_deleteDependent()source protected
_deleteDependent( string $id , boolean $cascade )
Cascades model deletes through associated hasMany and hasOne child records.
Parameters
- string
$id
- ID of record that was deleted
- boolean
$cascade
- Set to true to delete records that depend on this record
_deleteLinks()source protected
_deleteLinks( string $id )
Cascades model deletes through HABTM join keys.
Parameters
- string
$id
- ID of record that was deleted
_doSave()source protected
_doSave( array $data null , array $options array() )
Saves model data (based on white-list, if supplied) to the database. By default, validation occurs before save.
Parameters
- array
$data
optional null - Data to save.
- array
$options
optional array() -
can have following keys:
- validate: Set to true/false to enable or disable validation.
- fieldList: An array of fields you want to allow for saving.
- callbacks: Set to false to disable callbacks. Using 'before' or 'after' will enable only those callbacks.
-
counterCache
: Boolean to control updating of counter caches (if any)
Returns
mixedOn success Model::$data if its not empty or true, false on failure
Throws
PDOExceptionLink
http://book.cakephp.org/2.0/en/models/saving-your-data.html_filterResults()source protected
_filterResults( array $results , boolean $primary true )
Passes query results through model and behavior afterFind() methods.
Parameters
- array
$results
- Results to filter
- boolean
$primary
optional true - If this is the primary model results (results from model where the find operation was performed)
Returns
arraySet of filtered results
Triggers
Model.afterFind $this, array($results, $primary)_findAll()source protected
_findAll( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('all') operations. Only called by Model::find().
Parameters
- string
$state
- Either "before" or "after"
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
arraySee
Model::find()_findCount()source protected
_findCount( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('count') operations. Only called by Model::find().
Parameters
- string
$state
- Either "before" or "after"
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
integerThe number of records found, or false
See
Model::find()_findFirst()source protected
_findFirst( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('first') operations. Only called by Model::find().
Parameters
- string
$state
- Either "before" or "after"
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
arraySee
Model::find()_findList()source protected
_findList( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('list') operations. Only called by Model::find().
Parameters
- string
$state
- Either "before" or "after"
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
arrayKey/value pairs of primary keys/display field values of all records found
See
Model::find()_findNeighbors()source protected
_findNeighbors( string $state , array $query , array $results array() )
Detects the previous field's value, then uses logic to find the 'wrapping' rows and return them.
Parameters
- string
$state
- Either "before" or "after"
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
array_findThreaded()source protected
_findThreaded( string $state , array $query , array $results array() )
In the event of ambiguous results returned (multiple top level results, with different parent_ids) top level results with different parent_ids to the first result will be dropped
Parameters
- string
$state
- Either "before" or "after".
- array
$query
- Query.
- array
$results
optional array() - Results.
Returns
arrayThreaded results
_generateAssociation()source protected
_generateAssociation( string $type , string $assocKey )
Build an array-based association from string.
Parameters
- string
$type
- 'belongsTo', 'hasOne', 'hasMany', 'hasAndBelongsToMany'
- string
$assocKey
- Association key.
_isUUIDField()source protected
_isUUIDField( string $field )
Check if the passed in field is a UUID field
Parameters
- string
$field
- the field to check
Returns
boolean_normalizeXmlData()source protected
_normalizeXmlData( array $xml )
Normalize Xml::toArray()
to use in Model::save()
Parameters
- array
$xml
- XML as array
Returns
array_prepareUpdateFields()source protected
_prepareUpdateFields( array $data )
Helper method for Model::updateCounterCache()
. Checks the fields to be updated for
Parameters
- array
$data
- The fields of the record that will be updated
Returns
arrayReturns updated foreign key values, along with an 'old' key containing the old values, or empty if no foreign keys are updated.
_readDataSource()source protected
_readDataSource( string $type , array $query )
Read from the datasource
Model::_readDataSource() is used by all find() calls to read from the data source and can be overloaded to allow caching of datasource calls.
protected function _readDataSource($type, $query) { $cacheName = md5(json_encode($query) . json_encode($this->hasOne) . json_encode($this->belongsTo)); $cache = Cache::read($cacheName, 'cache-config-name'); if ($cache !== false) { return $cache; } $results = parent::_readDataSource($type, $query); Cache::write($cacheName, $results, 'cache-config-name'); return $results; }
Parameters
- string
$type
- Type of find operation (all / first / count / neighbors / list / threaded)
- array
$query
- Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Returns
array_saveMulti()source protected
_saveMulti( array $joined , integer|string $id , DataSource $db )
Saves model hasAndBelongsToMany data to the database.
Parameters
- array
$joined
- Data to save
- integer|string
$id
- ID of record in this model
-
DataSource
$db
- Datasource instance.
_setAliasData()source protected
_setAliasData( array $data )
Move values to alias
Parameters
- array
$data
- Data.
Returns
arrayafterDelete()source public
afterDelete( )
Called after every deletion operation.
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#afterdeleteafterFind()source public
afterFind( mixed $results , boolean $primary false )
Called after each find operation. Can be used to modify any results returned by find(). Return value should be the (modified) results.
Parameters
- mixed
$results
- The results of the find operation
- boolean
$primary
optional false - Whether this model is being queried directly (vs. being queried as an association)
Returns
mixedResult of the find operation
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#afterfindafterSave()source public
afterSave( boolean $created , array $options array() )
Called after each successful save operation.
Parameters
- boolean
$created
- True if this save created a new record
- array
$options
optional array() - Options passed from Model::save().
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#aftersaveSee
Model::save()beforeDelete()source public
beforeDelete( boolean $cascade true )
Called before every deletion operation.
Parameters
- boolean
$cascade
optional true - If true records that depend on this record will also be deleted
Returns
booleanTrue if the operation should continue, false if it should abort
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#beforedeletebeforeFind()source public
beforeFind( array $query )
Called before each find operation. Return false if you want to halt the find call, otherwise return the (modified) query data.
Parameters
- array
$query
- Data used to execute this query, i.e. conditions, order, etc.
Returns
mixedtrue if the operation should continue, false if it should abort; or, modified $query to continue with new $query
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#beforefindbeforeSave()source public
beforeSave( array $options array() )
Called before each save operation, after validation. Return a non-true result to halt the save.
Parameters
- array
$options
optional array() - Options passed from Model::save().
Returns
booleanTrue if the operation should continue, false if it should abort
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#beforesaveSee
Model::save()beforeValidate()source public
beforeValidate( array $options array() )
Called during validation operations, before validation. Please note that custom validation rules can be defined in $validate.
Parameters
- array
$options
optional array() - Options passed from Model::save().
Returns
booleanTrue if validate operation should continue, false to abort
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#beforevalidateSee
Model::save()bindModel()source public
bindModel( array $params , boolean $reset true )
Bind model associations on the fly.
If $reset
is false, association will not be reset to the originals defined in the model
Example: Add a new hasOne binding to the Profile model not defined in the model source code:
$this->User->bindModel(array('hasOne' => array('Profile')));
Bindings that are not made permanent will be reset by the next Model::find() call on this model.
Parameters
- array
$params
- Set of bindings (indexed by binding type)
- boolean
$reset
optional true - Set to false to make the binding permanent
Returns
booleanSuccess
Link
http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-flybuildQuery()source public
buildQuery( string $type 'first' , array $query array() )
Builds the query array that is used by the data source to generate the query to fetch the data.
Parameters
- string
$type
optional 'first' - Type of find operation (all / first / count / neighbors / list / threaded)
- array
$query
optional array() - Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Returns
array|nullQuery array or null if it could not be build for some reasons
Triggers
Model.beforeFind $this, array($query)See
Model::find()clear()source public
clear( )
This function is a convenient wrapper class to create(false) and, as the name suggests, clears the id, data, and validation errors.
Returns
booleanAlways true upon success
See
Model::create()create()source public
create( boolean|array $data array() , boolean $filterKey false )
Initializes the model for writing a new record, loading the default values for those fields that are not defined in $data, and clearing previous validation errors. Especially helpful for saving data in loops.
Parameters
- boolean|array
$data
optional array() Optional data array to assign to the model after it is created. If null or false, schema data defaults are not merged.
- boolean
$filterKey
optional false - If true, overwrites any primary key input with an empty value
Returns
arrayThe current Model::data; after merging $data and/or defaults from database
Link
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-create-array-data-arraydeconstruct()source public
deconstruct( string $field , array|object $data )
Deconstructs a complex data type (array or object) into a single field value.
Parameters
- string
$field
- The name of the field to be deconstructed
- array|object
$data
- An array or object to be deconstructed into a field
Returns
mixedThe resulting data that should be assigned to a field
delete()source public
delete( integer|string $id null , boolean $cascade true )
Removes record for given ID. If no ID is given, the current ID is used. Returns true on success.
Parameters
- integer|string
$id
optional null - ID of record to delete
- boolean
$cascade
optional true - Set to true to delete records that depend on this record
Returns
booleanTrue on success
Triggers
Model.beforeDelete $this, array($cascade)Model.afterDelete $this
Link
http://book.cakephp.org/2.0/en/models/deleting-data.htmldeleteAll()source public
deleteAll( mixed $conditions , boolean $cascade true , boolean $callbacks false )
Deletes multiple model records based on a set of conditions.
Parameters
- mixed
$conditions
- Conditions to match
- boolean
$cascade
optional true - Set to true to delete records that depend on this record
- boolean
$callbacks
optional false - Run callbacks
Returns
booleanTrue on success, false on failure
Link
http://book.cakephp.org/2.0/en/models/deleting-data.html#deleteallescapeField()source public
escapeField( string $field null , string $alias null )
Escapes the field name and prepends the model name. Escaping is done according to the current database driver's rules.
Parameters
- string
$field
optional null - Field to escape (e.g: id)
- string
$alias
optional null - Alias for the model (e.g: Post)
Returns
stringThe name of the escaped field for this Model (i.e. id becomes
Post
.id
).exists()source public
exists( integer|string $id null )
Returns true if a record with particular ID exists.
If $id is not passed it calls Model::getID()
to obtain the current record ID, and then performs a Model::find('count')
on the currently configured datasource to ascertain the existence of the record in persistent storage.
Parameters
- integer|string
$id
optional null - ID of record to check for existence
Returns
booleanTrue if such a record exists
field()source public
field( string $name , array $conditions null , string $order null )
Returns the content of a single field given the supplied conditions, of the first record in the supplied order.
Parameters
- string
$name
- The name of the field to get.
- array
$conditions
optional null - SQL conditions (defaults to NULL).
- string
$order
optional null - SQL ORDER BY fragment.
Returns
string|falseField content, or false if not found.
Link
http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-fieldfind()source public
find( string $type 'first' , array $query array() )
Queries the datasource and returns a result set array.
Used to perform find operations, where the first argument is type of find operation to perform (all / first / count / neighbors / list / threaded), second parameter options for finding (indexed array, including: 'conditions', 'limit', 'recursive', 'page', 'fields', 'offset', 'order', 'callbacks')
Eg:
$model->find('all', array( 'conditions' => array('name' => 'Thomas Anderson'), 'fields' => array('name', 'email'), 'order' => 'field3 DESC', 'recursive' => 1, 'group' => 'type', 'callbacks' => false, ));
In addition to the standard query keys above, you can provide Datasource, and behavior specific keys. For example, when using a SQL based datasource you can use the joins key to specify additional joins that should be part of the query.
$model->find('all', array( 'conditions' => array('name' => 'Thomas Anderson'), 'joins' => array( array( 'alias' => 'Thought', 'table' => 'thoughts', 'type' => 'LEFT', 'conditions' => '`Thought`.`person_id` = `Person`.`id`' ) ) ));
Disabling callbacks
The callbacks
key allows you to disable or specify the callbacks that should be run. To disable beforeFind & afterFind callbacks set 'callbacks' => false
in your options. You can also set the callbacks option to 'before' or 'after' to enable only the specified callback.
Adding new find types
Behaviors and find types can also define custom finder keys which are passed into find(). See the documentation for custom find types (http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#creating-custom-find-types) for how to implement custom find types.
Specifying 'fields' for notation 'list':
- If no fields are specified, then 'id' is used for key and 'model->displayField' is used for value.
- If a single field is specified, 'id' is used for key and specified field is used for value.
- If three fields are specified, they are used (in order) for key, value and group.
- Otherwise, first and second fields are used for key and value.
Note: find(list) + database views have issues with MySQL 5.0. Try upgrading to MySQL 5.1 if you have issues with database views.
Note: find(count) has its own return values.
Parameters
- string
$type
optional 'first' - Type of find operation (all / first / count / neighbors / list / threaded)
- array
$query
optional array() - Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
Returns
array|nullArray of records, or Null on failure.
Link
http://book.cakephp.org/2.0/en/models/retrieving-your-data.htmlgetAffectedRows()source public
getAffectedRows( )
Returns the number of rows affected by the last query.
Returns
integerNumber of rows
getAssociated()source public
getAssociated( string $type null )
Gets all the models with which this model is associated.
Parameters
- string
$type
optional null - Only result associations of this type
Returns
array|nullAssociations
getColumnType()source public
getColumnType( string $column )
Returns the column type of a column in the model.
Parameters
- string
$column
- The name of the model column
Returns
stringColumn type
getColumnTypes()source public
getColumnTypes( )
Returns an associative array of field names and column types.
Returns
arrayField types indexed by field name
getDataSource()source public
getDataSource( )
Gets the DataSource to which this model is bound.
Returns
DataSource
A DataSource object
getEventManager()source public
getEventManager( )
Returns the CakeEventManager manager instance that is handling any callbacks. You can use this instance to register any new listeners or callbacks to the model events, or create your own events and trigger them at will.
Returns
CakeEventManager
getID()source public
getID( integer $list 0 )
Returns the current record's ID
Parameters
- integer
$list
optional 0 - Index on which the composed ID is located
Returns
mixedThe ID of the current record, false if no ID
getInsertID()source public
getInsertID( )
Returns the ID of the last record this model inserted.
Returns
mixedLast inserted ID
getLastInsertID()source public
getLastInsertID( )
Returns the ID of the last record this model inserted.
Returns
mixedLast inserted ID
getNumRows()source public
getNumRows( )
Returns the number of rows returned from the last query.
Returns
integerNumber of rows
getVirtualField()source public
getVirtualField( string $field null )
Returns the expression for a model virtual field
Parameters
- string
$field
optional null - Name of field to look for
Returns
mixedIf $field is string expression bound to virtual field $field If $field is null, returns an array of all model virtual fields or false if none $field exist.
hasAny()source public
hasAny( array $conditions null )
Returns true if a record that meets given conditions exists.
Parameters
- array
$conditions
optional null - SQL conditions array
Returns
booleanTrue if such a record exists
hasField()source public
hasField( string|array $name , boolean $checkVirtual false )
Returns true if the supplied field exists in the model's database table.
Parameters
- string|array
$name
- Name of field to look for, or an array of names
- boolean
$checkVirtual
optional false - checks if the field is declared as virtual
Returns
mixedIf $name is a string, returns a boolean indicating whether the field exists. If $name is an array of field names, returns the first field that exists, or false if none exist.
hasMethod()source public
hasMethod( string $method )
Check that a method is callable on a model. This will check both the model's own methods, its inherited methods and methods that could be callable through behaviors.
Parameters
- string
$method
- The method to be called.
Returns
booleanTrue on method being callable.
implementedEvents()source public
implementedEvents( )
Returns a list of all events that will fire in the model during it's lifecycle. You can override this function to add your own listener callbacks
Returns
arrayImplementation of
CakeEventListener::implementedEvents()
invalidFields()source public
invalidFields( array|string $options array() )
Returns an array of fields that have failed the validation of the current model.
Additionally it populates the validationErrors property of the model with the same array.
Parameters
- array|string
$options
optional array() - An optional array of custom options to be made available in the beforeValidate callback
Returns
arrayArray of invalid fields and their error messages
See
Model::validates()invalidate()source public
invalidate( string $field , mixed $value true )
Marks a field as invalid, optionally setting the name of validation rule (in case of multiple validation for field) that was broken.
Parameters
- string
$field
- The name of the field to invalidate
- mixed
$value
optional true Name of validation rule that was not failed, or validation message to be returned. If no validation key is provided, defaults to true.
isForeignKey()source public
isForeignKey( string $field )
Returns true if given field name is a foreign key in this model.
Parameters
- string
$field
- Returns true if the input string ends in "_id"
Returns
booleanTrue if the field is a foreign key listed in the belongsTo array.
isUnique()source public
isUnique( array $fields , boolean|array $or true )
Returns false if any fields passed match any (by default, all if $or = false) of their matching values.
Can be used as a validation method. When used as a validation method, the $or
parameter contains an array of fields to be validated.
Parameters
- array
$fields
- Field/value pairs to search (if no values specified, they are pulled from $this->data)
- boolean|array
$or
optional true - If false, all fields specified must match in order for a false return value
Returns
booleanFalse if any records matching any fields are found
isVirtualField()source public
isVirtualField( string $field )
Returns true if the supplied field is a model Virtual Field
Parameters
- string
$field
- Name of field to look for
Returns
booleanindicating whether the field exists as a model virtual field.
joinModel()source public
joinModel( string|array $assoc , array $keys array() )
Gets the name and fields to be used by a join model. This allows specifying join fields in the association definition.
Parameters
- string|array
$assoc
- The model to be joined
- array
$keys
optional array() - Any join keys which must be merged with the keys queried
Returns
arrayonError()source public
onError( )
Called when a DataSource-level error occurs.
Link
http://book.cakephp.org/2.0/en/models/callback-methods.html#onerrorquery()source public
query( string $sql )
Returns a resultset for a given SQL statement. Custom SQL queries should be performed with this method.
The method can options 2nd and 3rd parameters.
- 2nd param: Either a boolean to control query caching or an array of parameters for use with prepared statement placeholders.
- 3rd param: If 2nd argument is provided, a boolean flag for enabling/disabled query caching.
Parameters
- string
$sql
- SQL statement
Returns
mixedResultset array or boolean indicating success / failure depending on the query executed
Link
http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-queryread()source public
read( string|array $fields null , integer|string $id null )
Returns a list of fields from the database, and sets the current model data (Model::$data) with the record found.
Parameters
- string|array
$fields
optional null - String of single field name, or an array of field names.
- integer|string
$id
optional null - The ID of the record to read
Returns
arrayArray of database fields, or false if not found
Link
http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-readresetAssociations()source public
resetAssociations( )
This resets the association arrays for the model back to those originally defined in the model. Normally called at the end of each call to Model::find()
Returns
booleanSuccess
save()source public
save( array $data null , boolean|array $validate true , array $fieldList array() )
Saves model data (based on white-list, if supplied) to the database. By default, validation occurs before save. Passthrough method to _doSave() with transaction handling.
Parameters
- array
$data
optional null - Data to save.
- boolean|array
$validate
optional true -
Either a boolean, or an array. If a boolean, indicates whether or not to validate before saving. If an array, can have following keys:
- atomic: If true (default), will attempt to save the record in a single transaction.
- validate: Set to true/false to enable or disable validation.
- fieldList: An array of fields you want to allow for saving.
- callbacks: Set to false to disable callbacks. Using 'before' or 'after' will enable only those callbacks.
-
counterCache
: Boolean to control updating of counter caches (if any)
- array
$fieldList
optional array() - List of fields to allow to be saved
Returns
mixedOn success Model::$data if its not empty or true, false on failure
Throws
ExceptionPDOException
Triggers
Model.beforeSave $this, array($options)Model.afterSave $this, array($created, $options)
Link
http://book.cakephp.org/2.0/en/models/saving-your-data.htmlsaveAll()source public
saveAll( array $data array() , array $options array() )
Backwards compatible passthrough method for: saveMany(), validateMany(), saveAssociated() and validateAssociated()
Saves multiple individual records for a single model; Also works with a single record, as well as all its associated records.
Options
-
validate
: Set to false to disable validation, true to validate each record before saving, 'first' to validate all records before any are saved (default), or 'only' to only validate the records, but not save them. -
atomic
: If true (default), will attempt to save all records in a single transaction. Should be set to false if database/table does not support transactions. -
fieldList
: Equivalent to the $fieldList parameter in Model::save(). It should be an associate array with model name as key and array of fields as value. Eg.array( 'SomeModel' => array('field'), 'AssociatedModel' => array('field', 'otherfield') )
-
deep
: See saveMany/saveAssociated -
callbacks
: See Model::save() -
counterCache
: See Model::save()
Parameters
- array
$data
optional array() Record data to save. This can be either a numerically-indexed array (for saving multiple records of the same type), or an array indexed by association name.
- array
$options
optional array() - Options to use when saving record data, See $options above.
Returns
mixedIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record saved successfully.
Link
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-arrayhttp://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveall-array-data-null-array-options-array
saveAssociated()source public
saveAssociated( array $data null , array $options array() )
Saves a single record, as well as all its directly associated records.
Options
-
validate
: Set tofalse
to disable validation,true
to validate each record before saving, 'first' to validate all records before any are saved(default), -
atomic
: If true (default), will attempt to save all records in a single transaction. Should be set to false if database/table does not support transactions. -
fieldList
: Equivalent to the $fieldList parameter in Model::save(). It should be an associate array with model name as key and array of fields as value. Eg.array( 'SomeModel' => array('field'), 'AssociatedModel' => array('field', 'otherfield') )
-
deep
: If set to true, not only directly associated data is saved, but deeper nested associated data as well. -
callbacks
: See Model::save() -
counterCache
: See Model::save()
Parameters
- array
$data
optional null - Record data to save. This should be an array indexed by association name.
- array
$options
optional array() - Options to use when saving record data, See $options above.
Returns
mixedIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record saved successfully.
Throws
PDOExceptionLink
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-arraysaveField()source public
saveField( string $name , mixed $value , boolean|array $validate false )
Saves the value of a single field to the database, based on the current model ID.
Parameters
- string
$name
- Name of the table field
- mixed
$value
- Value of the field
- boolean|array
$validate
optional false Either a boolean, or an array. If a boolean, indicates whether or not to validate before saving. If an array, allows control of 'validate', 'callbacks' and 'counterCache' options. See Model::save() for details of each options.
Returns
boolean|arraySee Model::save() False on failure or an array of model data on success.
See
Model::save()Link
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-savefield-string-fieldname-string-fieldvalue-validate-falsesaveMany()source public
saveMany( array $data null , array $options array() )
Saves multiple individual records for a single model
Options
-
validate
: Set to false to disable validation, true to validate each record before saving, 'first' to validate all records before any are saved (default), -
atomic
: If true (default), will attempt to save all records in a single transaction. Should be set to false if database/table does not support transactions. -
fieldList
: Equivalent to the $fieldList parameter in Model::save() -
deep
: If set to true, all associated data will be saved as well. -
callbacks
: See Model::save() -
counterCache
: See Model::save()
Parameters
- array
$data
optional null - Record data to save. This should be a numerically-indexed array
- array
$options
optional array() - Options to use when saving record data, See $options above.
Returns
mixedIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record saved successfully.
Throws
PDOExceptionLink
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-savemany-array-data-null-array-options-arrayschema()source public
schema( boolean|string $field false )
Returns an array of table metadata (column names and types) from the database. $field => keys(type, null, default, key, length, extra)
Parameters
- boolean|string
$field
optional false - Set to true to reload schema, or a string to return a specific field
Returns
array|nullArray of table metadata
set()source public
set( string|array|SimpleXmlElement|DomNode $one , string $two null )
This function does two things:
- it scans the array $one for the primary key, and if that's found, it sets the current id to the value of $one[id]. For all other keys than 'id' the keys and values of $one are copied to the 'data' property of this object.
- Returns an array with all of $one's keys and values. (Alternative indata: two strings, which are mangled to a one-item, two-dimensional array using $one for a key and $two as its value.)
Parameters
- string|array|SimpleXmlElement|DomNode
$one
- Array or string of data
- string
$two
optional null - Value string for the alternative indata method
Returns
array|nullData with all of $one's keys and values, otherwise null.
Link
http://book.cakephp.org/2.0/en/models/saving-your-data.htmlsetDataSource()source public
setDataSource( string $dataSource null )
Sets the DataSource to which this model is bound.
Parameters
- string
$dataSource
optional null - The name of the DataSource, as defined in app/Config/database.php
Throws
MissingConnectionException
setInsertID()source public
setInsertID( integer|string $id )
Sets the ID of the last record this model inserted
Parameters
- integer|string
$id
- Last inserted ID
setSource()source public
setSource( string $tableName )
Sets a custom table for your model class. Used by your controller to select a database table.
Parameters
- string
$tableName
- Name of the custom table
Throws
MissingTableException
when database table $tableName is not found on data source
unbindModel()source public
unbindModel( array $params , boolean $reset true )
Turn off associations on the fly.
If $reset is false, association will not be reset to the originals defined in the model
Example: Turn off the associated Model Support request, to temporarily lighten the User model:
$this->User->unbindModel(array('hasMany' => array('SupportRequest')));
Or alternatively: $this->User->unbindModel(array('hasMany' => 'SupportRequest'));
Unbound models that are not made permanent will reset with the next call to Model::find()
Parameters
- array
$params
- Set of bindings to unbind (indexed by binding type)
- boolean
$reset
optional true - Set to false to make the unbinding permanent
Returns
booleanSuccess
Link
http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-flyupdateAll()source public
updateAll( array $fields , mixed $conditions true )
Updates multiple model records based on a set of conditions.
Parameters
- array
$fields
Set of fields and values, indexed by fields. Fields are treated as SQL snippets, to insert literal values manually escape your data.
- mixed
$conditions
optional true - Conditions to match, true for all records
Returns
booleanTrue on success, false on failure
Link
http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-updateall-array-fields-mixed-conditionsupdateCounterCache()source public
updateCounterCache( array $keys array() , boolean $created false )
Updates the counter cache of belongsTo associations after a save or delete operation
Parameters
- array
$keys
optional array() - Optional foreign key data, defaults to the information $this->data
- boolean
$created
optional false True if a new record was created, otherwise only associations with 'counterScope' defined get updated
validateAssociated()source public
validateAssociated( array $data , array $options array() )
Validates a single record, as well as all its directly associated records.
Options
-
atomic
: If true (default), returns boolean. If false returns array. -
fieldList
: Equivalent to the $fieldList parameter in Model::save() -
deep
: If set to true, not only directly associated data , but deeper nested associated data is validated as well.
Warning: This method could potentially change the passed argument $data
, If you do not want this to happen, make a copy of $data
before passing it to this method
Parameters
- array
$data
- $data Record data to validate. This should be an array indexed by association name.
- array
$options
optional array() - Options to use when validating record data (see above), See also $options of validates().
Returns
array|booleanIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record validated successfully.
validateMany()source public
validateMany( array $data , array $options array() )
Validates multiple individual records for a single model
Options
-
atomic
: If true (default), returns boolean. If false returns array. -
fieldList
: Equivalent to the $fieldList parameter in Model::save() -
deep
: If set to true, all associated data will be validated as well.
Warning: This method could potentially change the passed argument $data
, If you do not want this to happen, make a copy of $data
before passing it to this method
Parameters
- array
$data
- $data Record data to validate. This should be a numerically-indexed array
- array
$options
optional array() - Options to use when validating record data (see above), See also $options of validates().
Returns
boolean|arrayIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record validated successfully.
validates()source public
validates( array $options array() )
Returns true if all fields pass validation. Will validate hasAndBelongsToMany associations that use the 'with' key as well. Since _saveMulti is incapable of exiting a save operation.
Will validate the currently set data. Use Model::set() or Model::create() to set the active data.
Parameters
- array
$options
optional array() - An optional array of custom options to be made available in the beforeValidate callback
Returns
booleanTrue if there are no errors
validator()source public
validator( ModelValidator $instance null )
Returns an instance of a model validator for this class
Parameters
-
ModelValidator
$instance
optional null Model validator instance. If null a new ModelValidator instance will be made using current model object
Returns
ModelValidator
Methods inherited from Object
_mergeVars()source 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()source 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()source 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()source 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
mixedReturns the result of the method call
log()source public
log( string $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
- string
$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
booleanSuccess of log write
requestAction()source 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
mixedBoolean true or false on success/failure, or contents of rendered action if 'return' is set in $extra.
toString()source public
toString( )
Object-to-string conversion. Each class can override this method as necessary.
Returns
stringThe name of this class
Properties detail
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.8/class-Permission.html