Trait EntityTrait

An entity represents a single result row from a repository. It exposes the methods for retrieving and storing properties associated in this row.

Direct Users

Properties summary

  • $_accessible protected
    array

    Map of properties in this entity that can be safely assigned, each property name points to a boolean indicating its status. An empty array means no properties are accessible

  • $_accessors protected static
    array
    Holds a cached list of getters/setters per class
  • $_className protected
    string
    Holds the name of the class for the instance object
  • $_dirty protected
    array

    Holds a list of the properties that were modified or added after this object was originally created.

  • $_errors protected
    array
    List of errors per field as stored in this object
  • $_hidden protected
    array

    List of property names that should not be included in JSON or Array representations of this Entity.

  • $_invalid protected
    array
    List of invalid fields and their data for errors upon validation/patching
  • $_new protected
    boolean

    Indicates whether or not this entity is yet to be persisted. Entities default to assuming they are new. You can use Table::persisted() to set the new flag on an entity based on records in the database.

  • $_original protected
    array
    Holds all properties that have been changed and their original values for this entity
  • $_properties protected
    array
    Holds all properties and their values for this entity
  • $_registryAlias protected
    string
    The alias of the repository this entity came from
  • $_virtual protected
    array

    List of computed or virtual fields that should be included in JSON or array representations of this Entity. If a field is present in both _hidden and _virtual the field will not be in the array/json versions of the entity.

Method Summary

  • __debugInfo() public

    Returns an array that can be used to describe the internal state of this object.

  • __get() public
    Magic getter to access properties that have been set in this entity
  • __isset() public

    Returns whether this entity contains a property named $property regardless of if it is empty.

  • __set() public
    Magic setter to add or edit a property in this entity
  • __toString() public
    Returns a string representation of this object in a human readable format.
  • __unset() public
    Removes a property from this entity
  • _accessor() protected static

    Fetch accessor method name Accessor methods (available or not) are cached in $_accessors

  • _nestedErrors() protected
    Auxiliary method for getting errors in nested entities
  • _readError() protected
    Read the error(s) from one or many objects.
  • accessible() public

    Stores whether or not a property value can be changed or set in this entity. The special property * can also be marked as accessible or protected, meaning that any other property specified before will take its value. For example $entity->accessible('*', true) means that any property not specified already will be accessible by default.

  • clean() public

    Sets the entire entity as clean, which means that it will appear as no properties being modified or added at all. This is an useful call for an initial object hydration

  • dirty() public

    Sets the dirty status of a single property. If called with no second argument, it will return whether the property was modified or not after the object creation.

  • errors() public

    Sets the error messages for a field or a list of fields. When called without the second argument it returns the validation errors for the specified fields. If called with no arguments it returns all the validation error messages stored in this entity and any other nested entity.

  • extract() public

    Returns an array with the requested properties stored in this entity, indexed by property name

  • Returns an array with the requested original properties stored in this entity, indexed by property name.

  • Returns an array with only the original properties stored in this entity, indexed by property name.

  • get() public
    Returns the value of a property by name
  • getDirty() public
    Gets the dirty properties.
  • getError() public
    Returns validation errors of a field
  • getErrors() public
    Returns all validation errors.
  • getHidden() public
    Gets the hidden properties.
  • getInvalid() public
    Get a list of invalid fields and their data for errors upon validation/patching
  • Get a single value of an invalid field. Returns null if not set.
  • getOriginal() public
    Returns the value of an original property by name
  • Gets all original values of the entity.
  • getSource() public
    Returns the alias of the repository from which this entity came from.
  • getVirtual() public
    Gets the virtual properties on this entity.
  • has() public

    Returns whether this entity contains a property named $property that contains a non-null value.

  • Get/Set the hidden properties on this entity.
  • invalid() public
    Sets a field as invalid and not patchable into the entity.
  • Checks if a property is accessible
  • isDirty() public
    Checks if the entity is dirty or if a single property of it is dirty.
  • isNew() public

    Returns whether or not this entity has already been persisted. This method can return null in the case there is no prior information on the status of this entity.

  • Returns the properties that will be serialized as JSON
  • Implements isset($entity);
  • offsetGet() public
    Implements $entity[$offset];
  • offsetSet() public
    Implements $entity[$offset] = $value;
  • offsetUnset() public
    Implements unset($result[$offset]);
  • set() public
    Sets a single property inside this entity.
  • setAccess() public

    Stores whether or not a property value can be changed or set in this entity. The special property * can also be marked as accessible or protected, meaning that any other property specified before will take its value. For example $entity->setAccess('*', true) means that any property not specified already will be accessible by default.

  • setDirty() public
    Sets the dirty status of a single property.
  • setError() public
    Sets errors for a single field
  • setErrors() public
    Sets error messages to the entity
  • setHidden() public
    Sets hidden properties.
  • setInvalid() public
    Set fields as invalid and not patchable into the entity.
  • Sets a field as invalid and not patchable into the entity.
  • setSource() public
    Sets the source alias
  • setVirtual() public
    Sets the virtual properties on this entity.
  • source() public
    Returns the alias of the repository from which this entity came from.
  • toArray() public

    Returns an array with all the properties that have been set to this entity

  • Removes a property or list of properties from this entity
  • Get/Set the virtual properties on this entity.
  • Get the list of visible properties.

Method Detail

__debugInfo()source public

__debugInfo( )

Returns an array that can be used to describe the internal state of this object.

Returns

array

__get()source public

__get( string $property )

Magic getter to access properties that have been set in this entity

Parameters

string $property
Name of the property to access

Returns

mixed

__isset()source public

__isset( string $property )

Returns whether this entity contains a property named $property regardless of if it is empty.

Parameters

string $property
The property to check.

Returns

boolean

See

\Cake\ORM\Entity::has()

__set()source public

__set( string $property , mixed $value )

Magic setter to add or edit a property in this entity

Parameters

string $property
The name of the property to set
mixed $value
The value to set to the property

__toString()source public

__toString( )

Returns a string representation of this object in a human readable format.

Returns

string

__unset()source public

__unset( string $property )

Removes a property from this entity

Parameters

string $property
The property to unset

_accessor()source protected static

_accessor( string $property , string $type )

Fetch accessor method name Accessor methods (available or not) are cached in $_accessors

Parameters

string $property
the field name to derive getter name from
string $type
the accessor type ('get' or 'set')

Returns

string
method name or empty string (no method available)

_nestedErrors()source protected

_nestedErrors( string $field )

Auxiliary method for getting errors in nested entities

Parameters

string $field
the field in this entity to check for errors

Returns

array
errors in nested entity if any

_readError()source protected

_readError( array|Cake\Datasource\EntityTrait $object , string|null $path null )

Read the error(s) from one or many objects.

Parameters

array|Cake\Datasource\EntityTrait $object
The object to read errors from.
string|null $path optional null
The field name for errors.

Returns

array

accessible()source public

accessible( string|array $property , boolean|null $set null )

Stores whether or not a property value can be changed or set in this entity. The special property * can also be marked as accessible or protected, meaning that any other property specified before will take its value. For example $entity->accessible('*', true) means that any property not specified already will be accessible by default.

You can also call this method with an array of properties, in which case they will each take the accessibility value specified in the second argument.

Example:

$entity->accessible('id', true); // Mark id as not protected
$entity->accessible('author_id', false); // Mark author_id as protected
$entity->accessible(['id', 'user_id'], true); // Mark both properties as accessible
$entity->accessible('*', false); // Mark all properties as protected

When called without the second param it will return whether or not the property can be set.

Example:

$entity->accessible('id'); // Returns whether it can be set or not

Deprecated

3.4.0 Use EntityTrait::setAccess() and EntityTrait::isAccessible()

Parameters

string|array $property
single or list of properties to change its accessibility
boolean|null $set optional null

true marks the property as accessible, false will mark it as protected.

Returns


$this|bool

clean()source public

clean( )

Sets the entire entity as clean, which means that it will appear as no properties being modified or added at all. This is an useful call for an initial object hydration

dirty()source public

dirty( string|null $property null , null|boolean $isDirty null )

Sets the dirty status of a single property. If called with no second argument, it will return whether the property was modified or not after the object creation.

When called with no arguments it will return whether or not there are any dirty property in the entity

Deprecated

3.4.0 Use EntityTrait::setDirty() and EntityTrait::isDirty()

Parameters

string|null $property optional null
the field to set or check status for
null|boolean $isDirty optional null

true means the property was changed, false means it was not changed and null will make the function return current state for that property

Returns

boolean
Whether the property was changed or not

errors()source public

errors( string|array|null $field null , string|array|null $errors null , boolean $overwrite false )

Sets the error messages for a field or a list of fields. When called without the second argument it returns the validation errors for the specified fields. If called with no arguments it returns all the validation error messages stored in this entity and any other nested entity.

Example

// Sets the error messages for a single field
$entity->errors('salary', ['must be numeric', 'must be a positive number']);

// Returns the error messages for a single field
$entity->errors('salary');

// Returns all error messages indexed by field name
$entity->errors();

// Sets the error messages for multiple fields at once
$entity->errors(['salary' => ['message'], 'name' => ['another message']);

When used as a setter, this method will return this entity instance for method chaining.

Deprecated

3.4.0 Use EntityTrait::setError(), EntityTrait::setErrors(), EntityTrait::getError() and EntityTrait::getErrors()

Parameters

string|array|null $field optional null
The field to get errors for, or the array of errors to set.
string|array|null $errors optional null
The errors to be set for $field
boolean $overwrite optional false
Whether or not to overwrite pre-existing errors for $field

Returns

array|Cake\Datasource\EntityTrait
$this

extract()source public

extract( array $properties , boolean $onlyDirty false )

Returns an array with the requested properties stored in this entity, indexed by property name

Parameters

array $properties
list of properties to be returned
boolean $onlyDirty optional false
Return the requested property only if it is dirty

Returns

array

extractOriginal()source public

extractOriginal( array $properties )

Returns an array with the requested original properties stored in this entity, indexed by property name.

Properties that are unchanged from their original value will be included in the return of this method.

Parameters

array $properties
List of properties to be returned

Returns

array

extractOriginalChanged()source public

extractOriginalChanged( array $properties )

Returns an array with only the original properties stored in this entity, indexed by property name.

This method will only return properties that have been modified since the entity was built. Unchanged properties will be omitted.

Parameters

array $properties
List of properties to be returned

Returns

array

get()source public

get( string $property )

Returns the value of a property by name

Parameters

string $property
the name of the property to retrieve

Returns

mixed

Throws

InvalidArgumentException
if an empty property name is passed

getDirty()source public

getDirty( )

Gets the dirty properties.

Returns

array

getError()source public

getError( string $field )

Returns validation errors of a field

Parameters

string $field
Field name to get the errors from

Returns

array

getErrors()source public

getErrors( )

Returns all validation errors.

Returns

array

getHidden()source public

getHidden( )

Gets the hidden properties.

Returns

array

getInvalid()source public

getInvalid( )

Get a list of invalid fields and their data for errors upon validation/patching

Returns

array

getInvalidField()source public

getInvalidField( string $field )

Get a single value of an invalid field. Returns null if not set.

Parameters

string $field
The name of the field.

Returns

mixed

getOriginal()source public

getOriginal( string $property )

Returns the value of an original property by name

Parameters

string $property
the name of the property for which original value is retrieved.

Returns

mixed

Throws

InvalidArgumentException
if an empty property name is passed.

getOriginalValues()source public

getOriginalValues( )

Gets all original values of the entity.

Returns

array

getSource()source public

getSource( )

Returns the alias of the repository from which this entity came from.

Returns

string

getVirtual()source public

getVirtual( )

Gets the virtual properties on this entity.

Returns

array

has()source public

has( string|array $property )

Returns whether this entity contains a property named $property that contains a non-null value.

Example:

$entity = new Entity(['id' => 1, 'name' => null]);
$entity->has('id'); // true
$entity->has('name'); // false
$entity->has('last_name'); // false

You can check multiple properties by passing an array:

$entity->has(['name', 'last_name']);

All properties must not be null to get a truthy result.

When checking multiple properties. All properties must not be null in order for true to be returned.

Parameters

string|array $property
The property or properties to check.

Returns

boolean

hiddenProperties()source public

hiddenProperties( null|array $properties null )

Get/Set the hidden properties on this entity.

If the properties argument is null, the currently hidden properties will be returned. Otherwise the hidden properties will be set.

Deprecated

3.4.0 Use EntityTrait::setHidden() and EntityTrait::getHidden()

Parameters

null|array $properties optional null
Either an array of properties to hide or null to get properties

Returns

array|Cake\Datasource\EntityTrait
$this

invalid()source public

invalid( string|array|null $field null , mixed|null $value null , boolean $overwrite false )

Sets a field as invalid and not patchable into the entity.

This is useful for batch operations when one needs to get the original value for an error message after patching. This value could not be patched into the entity and is simply copied into the _invalid property for debugging purposes or to be able to log it away.

Deprecated

3.5 Use getInvalid()/getInvalidField()/setInvalid() instead.

Parameters

string|array|null $field optional null
The field to get invalid value for, or the value to set.
mixed|null $value optional null
The invalid value to be set for $field.
boolean $overwrite optional false
Whether or not to overwrite pre-existing values for $field.

Returns


$this|mixed

isAccessible()source public

isAccessible( string $property )

Checks if a property is accessible

Example:

$entity->isAccessible('id'); // Returns whether it can be set or not

Parameters

string $property
Property name to check

Returns

boolean

isDirty()source public

isDirty( string $property null )

Checks if the entity is dirty or if a single property of it is dirty.

Parameters

string $property optional null
the field to check the status for

Returns

boolean
Whether the property was changed or not

isNew()source public

isNew( boolean|null $new null )

Returns whether or not this entity has already been persisted. This method can return null in the case there is no prior information on the status of this entity.

If called with a boolean it will set the known status of this instance, true means that the instance is not yet persisted in the database, false that it already is.

Parameters

boolean|null $new optional null
true if it is known this instance was not yet persisted

Returns

boolean
Whether or not the entity has been persisted.

jsonSerialize()source public

jsonSerialize( )

Returns the properties that will be serialized as JSON

Returns

array

offsetExists()source public

offsetExists( mixed $offset )

Implements isset($entity);

Parameters

mixed $offset
The offset to check.

Returns

boolean
Success

offsetGet()source public

offsetGet( mixed $offset )

Implements $entity[$offset];

Parameters

mixed $offset
The offset to get.

Returns

mixed

offsetSet()source public

offsetSet( mixed $offset , mixed $value )

Implements $entity[$offset] = $value;

Parameters

mixed $offset
The offset to set.
mixed $value
The value to set.

offsetUnset()source public

offsetUnset( mixed $offset )

Implements unset($result[$offset]);

Parameters

mixed $offset
The offset to remove.

set()source public

set( string|array $property , mixed $value null , array $options [] )

Sets a single property inside this entity.

Example:

$entity->set('name', 'Andrew');

It is also possible to mass-assign multiple properties to this entity with one call by passing a hashed array as properties in the form of property => value pairs

Example:

$entity->set(['name' => 'andrew', 'id' => 1]);
echo $entity->name // prints andrew
echo $entity->id // prints 1

Some times it is handy to bypass setter functions in this entity when assigning properties. You can achieve this by disabling the setter option using the $options parameter:

$entity->set('name', 'Andrew', ['setter' => false]);
$entity->set(['name' => 'Andrew', 'id' => 1], ['setter' => false]);

Mass assignment should be treated carefully when accepting user input, by default entities will guard all fields when properties are assigned in bulk. You can disable the guarding for a single set call with the guard option:

$entity->set(['name' => 'Andrew', 'id' => 1], ['guard' => true]);

You do not need to use the guard option when assigning properties individually:

// No need to use the guard option.
$entity->set('name', 'Andrew');

Parameters

string|array $property

the name of property to set or a list of properties with their respective values

mixed $value optional null

The value to set to the property or an array if the first argument is also an array, in which case will be treated as $options

array $options optional []

options to be used for setting the property. Allowed option keys are setter and guard

Returns


$this

Throws

InvalidArgumentException

setAccess()source public

setAccess( string|array $property , boolean $set )

Stores whether or not a property value can be changed or set in this entity. The special property * can also be marked as accessible or protected, meaning that any other property specified before will take its value. For example $entity->setAccess('*', true) means that any property not specified already will be accessible by default.

You can also call this method with an array of properties, in which case they will each take the accessibility value specified in the second argument.

Example:

$entity->setAccess('id', true); // Mark id as not protected
$entity->setAccess('author_id', false); // Mark author_id as protected
$entity->setAccess(['id', 'user_id'], true); // Mark both properties as accessible
$entity->setAccess('*', false); // Mark all properties as protected

Parameters

string|array $property
single or list of properties to change its accessibility
boolean $set

true marks the property as accessible, false will mark it as protected.

Returns


$this

setDirty()source public

setDirty( string $property , boolean $isDirty )

Sets the dirty status of a single property.

Parameters

string $property
the field to set or check status for
boolean $isDirty

true means the property was changed, false means it was not changed

Returns


$this

setError()source public

setError( string $field , string|array $errors , boolean $overwrite false )

Sets errors for a single field

Example

// Sets the error messages for a single field
$entity->errors('salary', ['must be numeric', 'must be a positive number']);

Parameters

string $field
The field to get errors for, or the array of errors to set.
string|array $errors
The errors to be set for $field
boolean $overwrite optional false
Whether or not to overwrite pre-existing errors for $field

Returns


$this

setErrors()source public

setErrors( array $fields , boolean $overwrite false )

Sets error messages to the entity

Example

// Sets the error messages for multiple fields at once
$entity->errors(['salary' => ['message'], 'name' => ['another message']);

Parameters

array $fields
The array of errors to set.
boolean $overwrite optional false
Whether or not to overwrite pre-existing errors for $fields

Returns


$this

setHidden()source public

setHidden( array $properties , boolean $merge false )

Sets hidden properties.

Parameters

array $properties
An array of properties to hide from array exports.
boolean $merge optional false
Merge the new properties with the existing. By default false.

Returns


$this

setInvalid()source public

setInvalid( array $fields , boolean $overwrite false )

Set fields as invalid and not patchable into the entity.

This is useful for batch operations when one needs to get the original value for an error message after patching. This value could not be patched into the entity and is simply copied into the _invalid property for debugging purposes or to be able to log it away.

Parameters

array $fields
The values to set.
boolean $overwrite optional false
Whether or not to overwrite pre-existing values for $field.

Returns


$this

setInvalidField()source public

setInvalidField( string $field , mixed $value )

Sets a field as invalid and not patchable into the entity.

Parameters

string $field
The value to set.
mixed $value
The invalid value to be set for $field.

Returns


$this

setSource()source public

setSource( string $alias )

Sets the source alias

Parameters

string $alias
the alias of the repository

Returns


$this

setVirtual()source public

setVirtual( array $properties , boolean $merge false )

Sets the virtual properties on this entity.

Parameters

array $properties
An array of properties to treat as virtual.
boolean $merge optional false
Merge the new properties with the existing. By default false.

Returns


$this

source()source public

source( string|null $alias null )

Returns the alias of the repository from which this entity came from.

If called with no arguments, it returns the alias of the repository this entity came from if it is known.

Deprecated

3.4.0 Use EntityTrait::getSource() and EntityTrait::setSource()

Parameters

string|null $alias optional null
the alias of the repository

Returns

string|Cake\Datasource\EntityTrait
$this

toArray()source public

toArray( )

Returns an array with all the properties that have been set to this entity

This method will recursively transform entities assigned to properties into arrays as well.

Returns

array

unsetProperty()source public

unsetProperty( string|array $property )

Removes a property or list of properties from this entity

Examples:

$entity->unsetProperty('name');
$entity->unsetProperty(['name', 'last_name']);

Parameters

string|array $property
The property to unset.

Returns


$this

virtualProperties()source public

virtualProperties( null|array $properties null )

Get/Set the virtual properties on this entity.

If the properties argument is null, the currently virtual properties will be returned. Otherwise the virtual properties will be set.

Deprecated

3.4.0 Use EntityTrait::getVirtual() and EntityTrait::setVirtual()

Parameters

null|array $properties optional null
Either an array of properties to treat as virtual or null to get properties

Returns

array|Cake\Datasource\EntityTrait
$this

visibleProperties()source public

visibleProperties( )

Get the list of visible properties.

The list of visible properties is all standard properties plus virtual properties minus hidden properties.

Returns

array

A list of properties that are 'visible' in all representations.


Properties detail

$_accessiblesource

protected array

Map of properties in this entity that can be safely assigned, each property name points to a boolean indicating its status. An empty array means no properties are accessible

The special property '*' can also be mapped, meaning that any other property not defined in the map will take its value. For example, '\*' => true means that any property not defined in the map will be accessible by default

['*' => true]

$_accessorssource

protected static array

Holds a cached list of getters/setters per class

[]

$_classNamesource

protected string

Holds the name of the class for the instance object

Deprecated

3.2 This field is no longer being used

$_dirtysource

protected array

Holds a list of the properties that were modified or added after this object was originally created.

[]

$_errorssource

protected array

List of errors per field as stored in this object

[]

$_hiddensource

protected array

List of property names that should not be included in JSON or Array representations of this Entity.

[]

$_invalidsource

protected array

List of invalid fields and their data for errors upon validation/patching

[]

$_newsource

protected boolean

Indicates whether or not this entity is yet to be persisted. Entities default to assuming they are new. You can use Table::persisted() to set the new flag on an entity based on records in the database.

true

$_originalsource

protected array

Holds all properties that have been changed and their original values for this entity

[]

$_propertiessource

protected array

Holds all properties and their values for this entity

[]

$_registryAliassource

protected string

The alias of the repository this entity came from

$_virtualsource

protected array

List of computed or virtual fields that should be included in JSON or array representations of this Entity. If a field is present in both _hidden and _virtual the field will not be in the array/json versions of the entity.

[]

© 2005–2017 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.
https://api.cakephp.org/3.4/class-Cake.Datasource.EntityTrait.html