Contains logic to convert array data into entities.
Useful when converting request data into entities.
\Cake\ORM\Table
The table instance this marshaller is for.
Creates a new sub-marshaller and merges the associated data for a BelongstoMany association.
Returns an array out of the original passed associations list where dot notation is transformed into nested arrays so that they can be parsed by other routines
Merges $data
into $entity
and recursively does the same for each one of the association names passed in $options
. When merging associations, if an entity is not present in the parent entity for a given association, a new one will be created.
Merges each of the elements from $data
into each of the entities in $entities
and recursively does the same for each of the association names passed in $options
. When merging associations, if an entity is not present in the parent entity for a given association, a new one will be created.
__construct(\Cake\ORM\Table $table)
Constructor.
\Cake\ORM\Table
$table The table this marshaller is for.
_belongsToMany(\Cake\ORM\Association\BelongsToMany $assoc, array $data, array $options)
Marshals data for belongsToMany associations.
Builds the related entities and handles the special casing for junction table entities.
\Cake\ORM\Association\BelongsToMany
$assoc The association to marshal.
array
$data The data to convert into entities.
array
$options optional List of options.
\Cake\Datasource\EntityInterface[]
An array of built entities.
BadMethodCallException
InvalidArgumentException
RuntimeException
_buildPropertyMap(array $data, array $options)
Build the map of property => marshalling callable.
array
$data The data being marshalled.
array
$options List of options containing the 'associated' key.
array
InvalidArgumentException
_loadAssociatedByIds(\Cake\ORM\Association $assoc, array $ids)
Loads a list of belongs to many from ids.
\Cake\ORM\Association
$assoc The association class for the belongsToMany association.
array
$ids The list of ids to load.
\Cake\Datasource\EntityInterface[]
An array of entities.
_marshalAssociation(\Cake\ORM\Association $assoc, mixed $value, array $options)
Create a new sub-marshaller and marshal the associated data.
\Cake\ORM\Association
$assoc The association to marshall
mixed
$value The data to hydrate. If not an array, this method will return null.
array
$options List of options.
\Cake\Datasource\EntityInterface|\Cake\Datasource\EntityInterface[]|null
_mergeAssociation(mixed $original, \Cake\ORM\Association $assoc, mixed $value, array $options)
Creates a new sub-marshaller and merges the associated data.
\Cake\Datasource\EntityInterface|\Cake\Datasource\EntityInterface[]
$original The original entity
\Cake\ORM\Association
$assoc The association to merge
mixed
$value The array of data to hydrate. If not an array, this method will return null.
array
$options List of options.
\Cake\Datasource\EntityInterface|\Cake\Datasource\EntityInterface[]|null
_mergeBelongsToMany(array $original, \Cake\ORM\Association\BelongsToMany $assoc, array $value, array $options)
Creates a new sub-marshaller and merges the associated data for a BelongstoMany association.
\Cake\Datasource\EntityInterface[]
$original The original entities list.
\Cake\ORM\Association\BelongsToMany
$assoc The association to marshall
array
$value The data to hydrate
array
$options List of options.
\Cake\Datasource\EntityInterface[]
_mergeJoinData(array $original, \Cake\ORM\Association\BelongsToMany $assoc, array $value, array $options)
Merge the special _joinData property into the entity set.
\Cake\Datasource\EntityInterface[]
$original The original entities list.
\Cake\ORM\Association\BelongsToMany
$assoc The association to marshall
array
$value The data to hydrate
array
$options List of options.
\Cake\Datasource\EntityInterface[]
An array of entities
_normalizeAssociations(mixed $associations)
Returns an array out of the original passed associations list where dot notation is transformed into nested arrays so that they can be parsed by other routines
array|string
$associations The array of included associations.
array
An array having dot notation transformed into nested arrays
_prepareDataAndOptions(array $data, array $options)
Returns data and options prepared to validate and marshall.
array
$data The data to prepare.
array
$options The options passed to this marshaller.
array
An array containing prepared data and options.
_validate(array $data, array $options, bool $isNew)
Returns the validation errors for a data set based on the passed options
array
$data The data to validate.
array
$options The options passed to this marshaller.
bool
$isNew Whether it is a new entity or one to be updated.
array
The list of validation errors.
RuntimeException
dispatchAfterMarshal(\Cake\Datasource\EntityInterface $entity, array $data, array $options)
dispatch Model.afterMarshal event.
\Cake\Datasource\EntityInterface
$entity The entity that was marshaled.
array
$data readOnly $data to use.
array
$options optional List of options that are readOnly.
many(array $data, array $options)
Hydrate many entities and their associated data.
array
$data The data to hydrate.
array
$options optional List of options
\Cake\Datasource\EntityInterface[]
An array of hydrated records.
merge(\Cake\Datasource\EntityInterface $entity, array $data, array $options)
Merges $data
into $entity
and recursively does the same for each one of the association names passed in $options
. When merging associations, if an entity is not present in the parent entity for a given association, a new one will be created.
When merging HasMany or BelongsToMany associations, all the entities in the $data
array will appear, those that can be matched by primary key will get the data merged, but those that cannot, will be discarded. ids
option can be used to determine whether the association must use the _ids
format.
The above options can be used in each nested associated
array. In addition to the above options you can also use the onlyIds
option for HasMany and BelongsToMany associations. When true this option restricts the request data to only be read from _ids
.
$result = $marshaller->merge($entity, $data, [ 'associated' => ['Tags' => ['onlyIds' => true]] ]);
\Cake\Datasource\EntityInterface
$entity the entity that will get the data merged in
array
$data key value list of fields to be merged into the entity
array
$options optional List of options.
\Cake\Datasource\EntityInterface
mergeMany(iterable $entities, array $data, array $options)
Merges each of the elements from $data
into each of the entities in $entities
and recursively does the same for each of the association names passed in $options
. When merging associations, if an entity is not present in the parent entity for a given association, a new one will be created.
Records in $data
are matched against the entities using the primary key column. Entries in $entities
that cannot be matched to any record in $data
will be discarded. Records in $data
that could not be matched will be marshalled as a new entity.
When merging HasMany or BelongsToMany associations, all the entities in the $data
array will appear, those that can be matched by primary key will get the data merged, but those that cannot, will be discarded.
iterable<\Cake\Datasource\EntityInterface>
$entities the entities that will get the data merged in
array
$data list of arrays to be merged into the entities
array
$options optional List of options.
\Cake\Datasource\EntityInterface[]
one(array $data, array $options)
Hydrate one entity and its associated data.
The above options can be used in each nested associated
array. In addition to the above options you can also use the onlyIds
option for HasMany and BelongsToMany associations. When true this option restricts the request data to only be read from _ids
.
$result = $marshaller->one($data, [ 'associated' => ['Tags' => ['onlyIds' => true]] ]);
$result = $marshaller->one($data, [ 'associated' => [ 'Tags' => ['accessibleFields' => ['*' => true]] ] ]);
array
$data The data to hydrate.
array
$options optional List of options
\Cake\Datasource\EntityInterface
The table instance this marshaller is for.
\Cake\ORM\Table
© 2005–present 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/4.1/class-Cake.ORM.Marshaller.html