Access Control Object
Model implements CakeEventListener
AclNode
Aco node( string|array|Model $ref null )
Retrieves the Aro/Aco node for this model
Model $ref optional null arrayCakeException__call( string $method , array $params )
Handles custom method calls, like findBy<field> for DB models, and custom RPC calls for remote data sources.
$method $params mixed__get( string $name )
Returns the value of the requested variable if it can be set by __isset()
$name mixed__isset( string $name )
Handles the lazy loading of model associations by looking in the association arrays for the requested variable
$name boolean_addToWhiteList( string $key , array $options )
Helper method for saveAll() and friends, to add foreign key to fieldlist
$key $options array_clearCache( string $type null )
Clears cache for this model.
$type optional null mixed_collectForeignKeys( string $type 'belongsTo' )
Collects foreign keys from associations.
$type optional 'belongsTo' array_constructLinkedModel( string $assoc , string $className null , string $plugin null )
Protected helper method to create associated models of a given class.
$assoc $className optional null $plugin optional null _deleteDependent( string $id , boolean $cascade )
Cascades model deletes through associated hasMany and hasOne child records.
$id $cascade _deleteLinks( string $id )
Cascades model deletes through HABTM join keys.
$id _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.
$data optional null $options optional array() counterCache: Boolean to control updating of counter caches (if any)mixedPDOException_filterResults( array $results , boolean $primary true )
Passes query results through model and behavior afterFind() methods.
$results $primary optional true array_findAll( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('all') operations. Only called by Model::find().
$state $query $results optional array() arrayModel::find()_findCount( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('count') operations. Only called by Model::find().
$state $query $results optional array() integerModel::find()_findFirst( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('first') operations. Only called by Model::find().
$state $query $results optional array() arrayModel::find()_findList( string $state , array $query , array $results array() )
Handles the before/after filter logic for find('list') operations. Only called by Model::find().
$state $query $results optional array() arrayModel::find()_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.
$state $query $results optional array() array_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
$state $query $results optional array() array_generateAssociation( string $type , string $assocKey )
Build an array-based association from string.
$type $assocKey _isUUIDField( string $field )
Check if the passed in field is a UUID field
$field boolean_normalizeXmlData( array $xml )
Normalize Xml::toArray() to use in Model::save()
$xml array_prepareUpdateFields( array $data )
Helper method for Model::updateCounterCache(). Checks the fields to be updated for
$data array_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)); $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; }
$type $query array_saveMulti( array $joined , integer|string $id , DataSource $db )
Saves model hasAndBelongsToMany data to the database.
$joined $id DataSource $db _setAliasData( array $data )
Move values to alias
$data arrayafterDelete( )
Called after every deletion operation.
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.
$results $primary optional false mixedafterSave( boolean $created , array $options array() )
Called after each successful save operation.
$created $options optional array() Model::save()beforeDelete( boolean $cascade true )
Called before every deletion operation.
$cascade optional true booleanbeforeFind( array $query )
Called before each find operation. Return false if you want to halt the find call, otherwise return the (modified) query data.
$query mixedbeforeSave( array $options array() )
Called before each save operation, after validation. Return a non-true result to halt the save.
$options optional array() booleanModel::save()beforeValidate( array $options array() )
Called during validation operations, before validation. Please note that custom validation rules can be defined in $validate.
$options optional array() booleanModel::save()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.
$params $reset optional true booleanbuildQuery( 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.
$type optional 'first' $query optional array() array|nullModel::find()clear( )
This function is a convenient wrapper class to create(false) and, as the name suggests, clears the id, data, and validation errors.
booleanModel::create()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.
$data optional array() $filterKey optional false arraydeconstruct( string $field , array|object $data )
Deconstructs a complex data type (array or object) into a single field value.
$field $data mixeddelete( 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.
$id optional null $cascade optional true booleandeleteAll( mixed $conditions , boolean $cascade true , boolean $callbacks false )
Deletes multiple model records based on a set of conditions.
$conditions $cascade optional true $callbacks optional false booleanescapeField( 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.
$field optional null $alias optional null stringPost.id).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.
$id optional null booleanfield( 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.
$name $conditions optional null $order optional null string|falsefind( 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' => 2, '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`' ) ) ));
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.
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':
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.
$type optional 'first' $query optional array() array|nullgetAffectedRows( )
Returns the number of rows affected by the last query.
integergetAssociated( string $type null )
Gets all the models with which this model is associated.
$type optional null array|nullgetColumnType( string $column )
Returns the column type of a column in the model.
$column stringgetColumnTypes( )
Returns an associative array of field names and column types.
arraygetDataSource( )
Gets the DataSource to which this model is bound.
DataSourcegetEventManager( )
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.
CakeEventManagergetID( integer $list 0 )
Returns the current record's ID
$list optional 0 mixedgetInsertID( )
Returns the ID of the last record this model inserted.
mixedgetLastInsertID( )
Returns the ID of the last record this model inserted.
mixedgetNumRows( )
Returns the number of rows returned from the last query.
integergetVirtualField( string $field null )
Returns the expression for a model virtual field
$field optional null mixedhasAny( array $conditions null )
Returns true if a record that meets given conditions exists.
$conditions optional null booleanhasField( string|array $name , boolean $checkVirtual false )
Returns true if the supplied field exists in the model's database table.
$name $checkVirtual optional false mixedhasMethod( 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.
$method booleanimplementedEvents( )
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
arrayCakeEventListener::implementedEvents() 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.
$options optional array() arrayModel::validates()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.
$field $value optional true isForeignKey( string $field )
Returns true if given field name is a foreign key in this model.
$field booleanisUnique( 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.
$fields $or optional true booleanisVirtualField( string $field )
Returns true if the supplied field is a model Virtual Field
$field booleanjoinModel( 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.
$assoc $keys optional array() arrayonError( )
Called when a DataSource-level error occurs.
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.
$sql mixedread( 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.
$fields optional null $id optional null arrayresetAssociations( )
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()
booleansave( 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.
$data optional null $validate optional true counterCache: Boolean to control updating of counter caches (if any)$fieldList optional array() mixedExceptionPDOExceptionsaveAll( 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.
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/saveAssociatedcallbacks: See Model::save()counterCache: See Model::save()$data optional array() $options optional array() mixedsaveAssociated( array $data null , array $options array() )
Saves a single record, as well as all its directly associated records.
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(). 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()$data optional null $options optional array() mixedPDOExceptionsaveField( string $name , mixed $value , boolean|array $validate false )
Saves the value of a single field to the database, based on the current model ID.
$name $value $validate optional false boolean|arrayModel::save()saveMany( array $data null , array $options array() )
Saves multiple individual records for a single model
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()$data optional null $options optional array() mixedPDOExceptionschema( 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)
$field optional false array|nullset( string|array|SimpleXmlElement|DomNode $one , string $two null )
This function does two things:
1. 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. 2. 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.)
$one $two optional null array|nullsetDataSource( string $dataSource null )
Sets the DataSource to which this model is bound.
$dataSource optional null MissingConnectionExceptionsetInsertID( integer|string $id )
Sets the ID of the last record this model inserted
$id setSource( string $tableName )
Sets a custom table for your model class. Used by your controller to select a database table.
$tableName MissingTableExceptionunbindModel( 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()
$params $reset optional true booleanupdateAll( array $fields , mixed $conditions true )
Updates multiple model records based on a set of conditions.
$fields $conditions optional true booleanupdateCounterCache( array $keys array() , boolean $created false )
Updates the counter cache of belongsTo associations after a save or delete operation
$keys optional array() $created optional false validateAssociated( array $data , array $options array() )
Validates a single record, as well as all its directly associated records.
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
$data $options optional array() array|booleanvalidateMany( array $data , array $options array() )
Validates multiple individual records for a single model
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
$data $options optional array() boolean|arrayvalidates( 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.
$options optional array() booleanvalidator( ModelValidator $instance null )
Returns an instance of a model validator for this class
ModelValidator $instance optional null ModelValidator_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.
$properties $class $normalize optional true _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.
$properties optional array() _stop( integer|string $status 0 )
Stop execution of the current script. Wraps exit() making testing easier.
$status optional 0 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
$method $params optional array() mixedlog( 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.
$msg $type optional LOG_ERR $scope optional null booleanrequestAction( 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()
POST and GET data can be simulated in requestAction. Use $extra['url'] for GET data. The $extra['data'] parameter allows POST data simulation.
$url $extra optional array() mixedtoString( )
Object-to-string conversion. Each class can override this method as necessary.
stringpublic array
ACL models use the Tree behavior
array('Tree' => array('type' => 'nested'))
public BehaviorCollection
Holds the Behavior objects currently bound to this model.
null public array
Holds model associations temporarily to allow for dynamic (un)binding.
array() public boolean
Safe update mode If true, this prevents Model::save() from generating a query with WHERE 1 = 1 on race condition.
false protected array
Default list of association keys.
array( 'belongsTo' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'counterCache'), 'hasOne' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'dependent'), 'hasMany' => array('className', 'foreignKey', 'conditions', 'fields', 'order', 'limit', 'offset', 'dependent', 'exclusive', 'finderQuery', 'counterQuery'), 'hasAndBelongsToMany' => array('className', 'joinTable', 'with', 'foreignKey', 'associationForeignKey', 'conditions', 'fields', 'order', 'limit', 'offset', 'unique', 'finderQuery') )
protected array
Holds provided/generated association key names and other data for all associations.
array('belongsTo', 'hasOne', 'hasMany', 'hasAndBelongsToMany')
protected CakeEventManager
Instance of the CakeEventManager this model is using to dispatch inner events.
null protected boolean
Has the datasource been configured.
Model::getDataSource()false public array
Detailed list of belongsTo associations.
public $belongsTo = array('Group', 'Department');
public $belongsTo = array( 'Group', 'Department' => array( 'className' => 'Department', 'foreignKey' => 'department_id' ) );
className: the class name of the model being associated to the current model. If you're defining a 'Profile belongsTo User' relationship, the className key should equal 'User.'foreignKey: the name of the foreign key found in the current model. This is especially handy if you need to define multiple belongsTo relationships. The default value for this key is the underscored, singular name of the other model, suffixed with '_id'.conditions: An SQL fragment used to filter related model records. It's good practice to use model names in SQL fragments: 'User.active = 1' is always better than just 'active = 1.'type: the type of the join to use in the SQL query, default is LEFT which may not fit your needs in all situations, INNER may be helpful when you want everything from your main and associated models or nothing at all!(effective when used with some conditions of course). (NB: type value is in lower case - i.e. left, inner)fields: A list of fields to be retrieved when the associated model data is fetched. Returns all fields by default.order: An SQL fragment that defines the sorting order for the returned associated rows.counterCache: If set to true the associated Model will automatically increase or decrease the "[singular_model_name]_count" field in the foreign table whenever you do a save() or delete(). If its a string then its the field name to use. The value in the counter field represents the number of related rows.counterScope: Optional conditions array to use for updating counter cache field.array() public array
Container for the data that this model gets from persistent storage (usually, a database).
array() public string
Custom display field name. Display fields are used by Scaffold, in SELECT boxes' OPTION elements.
This field is also used in find('list') when called with no extra parameters in the fields list
null public array
List of valid finder method options, supplied as the first parameter to find().
array( 'all' => true, 'first' => true, 'count' => true, 'neighbors' => true, 'list' => true, 'threaded' => true )
public array
Detailed list of hasMany associations.
public $hasMany = array('Comment', 'Task');
public $hasMany = array( 'Comment', 'Task' => array( 'className' => 'Task', 'foreignKey' => 'user_id' ) );
className: the class name of the model being associated to the current model. If you're defining a 'User hasMany Comment' relationship, the className key should equal 'Comment.'foreignKey: the name of the foreign key found in the other model. This is especially handy if you need to define multiple hasMany relationships. The default value for this key is the underscored, singular name of the actual model, suffixed with '_id'.conditions: An SQL fragment used to filter related model records. It's good practice to use model names in SQL fragments: "Comment.status = 1" is always better than just "status = 1."fields: A list of fields to be retrieved when the associated model data is fetched. Returns all fields by default.order: An SQL fragment that defines the sorting order for the returned associated rows.limit: The maximum number of associated rows you want returned.offset: The number of associated rows to skip over (given the current conditions and order) before fetching and associating.dependent: When dependent is set to true, recursive model deletion is possible. In this example, Comment records will be deleted when their associated User record has been deleted.exclusive: When exclusive is set to true, recursive model deletion does the delete with a deleteAll() call, instead of deleting each entity separately. This greatly improves performance, but may not be ideal for all circumstances.finderQuery: A complete SQL query CakePHP can use to fetch associated model records. This should be used in situations that require very custom results.array() public array
Detailed list of hasOne associations.
public $hasOne = array('Profile', 'Address');
public $hasOne = array( 'Profile', 'Address' => array( 'className' => 'Address', 'foreignKey' => 'user_id' ) );
className: the class name of the model being associated to the current model. If you're defining a 'User hasOne Profile' relationship, the className key should equal 'Profile.'foreignKey: the name of the foreign key found in the other model. This is especially handy if you need to define multiple hasOne relationships. The default value for this key is the underscored, singular name of the current model, suffixed with '_id'. In the example above it would default to 'user_id'.conditions: An SQL fragment used to filter related model records. It's good practice to use model names in SQL fragments: "Profile.approved = 1" is always better than just "approved = 1."fields: A list of fields to be retrieved when the associated model data is fetched. Returns all fields by default.order: An SQL fragment that defines the sorting order for the returned associated rows.dependent: When the dependent key is set to true, and the model's delete() method is called with the cascade parameter set to true, associated model records are also deleted. In this case we set it true so that deleting a User will also delete her associated Profile.array() public mixed
Value of the primary key ID of the record that this model is currently pointing to. Automatically set after database insertions.
false public string
The column name(s) and direction(s) to order find results by default.
public $order = "Post.created DESC"; public $order = array("Post.view_count DESC", "Post.rating DESC");
null public string
The name of the primary key field for this model.
null public integer
Number of associations to recurse through during find calls. Fetches only the first level by default.
1 public string
Holds physical schema/database name for this model. Automatically set during Model creation.
null public string
Database table prefix for tables in model.
null public array
List of table names included in the model description. Used for associations.
array() public boolean
If true, afterFind will be passed consistent formatted $results in case of $primary is false. The format will be such as the following.
$results = array( 0 => array( 'ModelName' => array( 'field1' => 'value1', 'field2' => 'value2' ) ) );
true public string
The name of the DataSource connection that this Model uses
The value must be an attribute name that you defined in app/Config/database.php or created using ConnectionManager::create().
'default' public string
Custom database table name, or null/false if no table association is desired.
null public array
List of validation rules. It must be an array with the field name as key and using as value one of the following possibilities
public $validate = array( 'name' => '/^[a-z].+$/i' );
public $validate = array( 'name' => 'notBlank' );
public $validate = array( 'length' => array( 'rule' => array('lengthBetween', 5, 25) ) );
public $validate = array( 'password' => array( 'rule' => array('customValidation') ) ); public function customValidation($data) { // $data will contain array('password' => 'value') if (isset($this->data[$this->alias]['password2'])) { return $this->data[$this->alias]['password2'] === current($data); } return true; }
The messages will be used in Model::$validationErrors and can be used in the FormHelper
public $validate = array( 'length' => array( 'rule' => array('lengthBetween', 5, 15), 'message' => array('Between %d to %d characters') ) );
public $validate = array( 'login' => array( array( 'rule' => 'alphaNumeric', 'message' => 'Only alphabets and numbers allowed', 'last' => true ), array( 'rule' => array('minLength', 8), 'message' => array('Minimum length of %d characters') ) ) );
rule: String with method name, regular expression (started by slash) or array with method and parametersmessage: String with the message or array if have multiple parameters. See http://php.net/sprintf
last: Boolean value to indicate if continue validating the others rules if the current fail [Default: true]required: Boolean value to indicate if the field must be present on saveallowEmpty: Boolean value to indicate if the field can be emptyon: Possible values: update, create. Indicate to apply this rule only on update or createarray() public string
Name of the validation string domain to use when translating validation errors.
null public array
Array of virtual fields this model has. Virtual fields are aliased SQL expressions. Fields added to this property will be read as other fields in a model but will not be saveable.
public $virtualFields = array('two' => '1 + 1');
Is a simplistic example of how to set virtualFields
array()
© 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.7/class-Aco.html