$_containments
$_containments : array
Nested array describing the association to be fetched and the options to apply for each of them, if any
Exposes the methods for storing the associations that should be eager loaded for a table once a query is provided and delegates the job of creating the required joins and decorating the results so that those associations can be part of the result set.
$_normalized : array<mixed,\Cake\ORM\EagerLoadable>|\Cake\ORM\EagerLoadable|null
Contains a nested array with the compiled containments tree This is a normalized version of the user provided containments array.
$_loadExternal : array<mixed,\Cake\ORM\EagerLoadable>
A list of associations that should be loaded with a separate query
$_matching : \Cake\ORM\EagerLoader
Another EagerLoader instance that will be used for 'matching' associations.
contain(array|string $associations = array(), callable|null $queryBuilder = null) : array
Sets the list of associations that should be eagerly loaded along for a specific table using when a query is provided. The list of associated tables passed to this method must have been previously set as associations using the Table API.
Associations can be arbitrarily nested using dot notation or nested arrays, this allows this object to calculate joins or any additional queries that must be executed to bring the required associated data.
The getter part is deprecated as of 3.6.0. Use getContain() instead.
Accepted options per passed association:
array|string | $associations | list of table aliases to be queried. When this method is called multiple times it will merge previous list with the new one. |
callable|null | $queryBuilder | The query builder callable |
When using $queryBuilder with an array of $associations
Containments.
getContain() : array
Gets the list of associations that should be eagerly loaded along for a specific table using when a query is provided. The list of associated tables passed to this method must have been previously set as associations using the Table API.
Containments.
setMatching(string $assoc, callable|null $builder = null, array $options = array()) : $this
Adds a new association to the list that will be used to filter the results of any given query based on the results of finding records for that association.
You can pass a dot separated path of associations to this method as its first
parameter, this will translate in setting all those associations with the
matching
option.
string | $assoc | A single association or a dot separated path of associations. |
callable|null | $builder | the callback function to be used for setting extra options to the filtering query |
array | $options | Extra options for the association matching. |
None found |
getMatching() : array
Returns the current tree of associations to be matched.
The resulting containments array
None found |
matching(string|null $assoc = null, callable|null $builder = null, array $options = array()) : array
Adds a new association to the list that will be used to filter the results of any given query based on the results of finding records for that association.
You can pass a dot separated path of associations to this method as its first
parameter, this will translate in setting all those associations with the
matching
option.
If called with no arguments it will return the current tree of associations to be matched.
string|null | $assoc | A single association or a dot separated path of associations. |
callable|null | $builder | the callback function to be used for setting extra options to the filtering query |
array | $options | Extra options for the association matching, such as 'joinType' and 'fields' |
The resulting containments array
None found |
normalized(\Cake\ORM\Table $repository) : array
Returns the fully normalized array of associations that should be eagerly loaded for a table. The normalized array will restructure the original array by sorting all associations under one key and special options under another.
Each of the levels of the associations tree will converted to a Cake\ORM\EagerLoadable object, that contains all the information required for the association objects to load the information from the database.
Additionally it will set an 'instance' key per association containing the association instance from the corresponding source table
\Cake\ORM\Table | $repository | The table containing the association that will be normalized |
None found |
attachAssociations(\Cake\ORM\Query $query, \Cake\ORM\Table $repository, boolean $includeFields) : void
Modifies the passed query to apply joins or any other transformation required in order to eager load the associations described in the `contain` array.
This method will not modify the query for loading external associations, i.e. those that cannot be loaded without executing a separate query.
\Cake\ORM\Query | $query | The query to be modified |
\Cake\ORM\Table | $repository | The repository containing the associations |
boolean | $includeFields | whether to append all fields from the associations to the passed query. This can be overridden according to the settings defined per association in the containments array |
None found |
attachableAssociations(\Cake\ORM\Table $repository) : array
Returns an array with the associations that can be fetched using a single query, the array keys are the association aliases and the values will contain an array with Cake\ORM\EagerLoadable objects.
\Cake\ORM\Table | $repository | The table containing the associations to be attached |
None found |
externalAssociations(\Cake\ORM\Table $repository) : array<mixed,\Cake\ORM\EagerLoadable>
Returns an array with the associations that need to be fetched using a separate query, each array value will contain a Cake\ORM\EagerLoadable object.
\Cake\ORM\Table | $repository | The table containing the associations to be loaded |
None found |
loadExternal(\Cake\ORM\Query $query, \Cake\Database\StatementInterface $statement) : \Cake\Database\StatementInterface
Decorates the passed statement object in order to inject data from associations that cannot be joined directly.
\Cake\ORM\Query | $query | The query for which to eager load external associations |
\Cake\Database\StatementInterface | $statement | The statement created after executing the $query |
statement modified statement with extra loaders
None found |
associationsMap(\Cake\ORM\Table $table) : array
Returns an array having as keys a dotted path of associations that participate in this eager loader. The values of the array will contain the following keys
matching()
.\Cake\ORM\Table | $table | The table containing the association that will be normalized |
None found |
addToJoinsMap(string $alias, \Cake\ORM\Association $assoc, boolean $asMatching = false, string $targetProperty = null) : void
Registers a table alias, typically loaded as a join in a query, as belonging to an association. This helps hydrators know what to do with the columns coming from such joined table.
string | $alias | The table alias as it appears in the query. |
\Cake\ORM\Association | $assoc | The association object the alias represents; will be normalized |
boolean | $asMatching | Whether or not this join results should be treated as a 'matching' association. |
string | $targetProperty | The property name where the results of the join should be nested at. If not passed, the default property for the association will be used. |
None found |
None found |
_reformatContain(array $associations, array $original) : array
Formats the containments array so that associations are always set as keys in the array. This function merges the original associations array with the new associations provided
array | $associations | user provided containments array |
array | $original | The original containments array to merge with the new one |
None found |
_normalizeContain(\Cake\ORM\Table $parent, string $alias, array $options, array $paths) : \Cake\ORM\EagerLoadable
Auxiliary function responsible for fully normalizing deep associations defined using `contain()`
\Cake\ORM\Table | $parent | owning side of the association |
string | $alias | name of the association to be loaded |
array | $options | list of extra options to use for this association |
array | $paths | An array with two values, the first one is a list of dot
separated strings representing associations that lead to this |
When containments refer to associations that do not exist.
Object with normalized associations
None found |
_fixStrategies() : void
Iterates over the joinable aliases list and corrects the fetching strategies in order to avoid aliases collision in the generated queries.
This function operates on the array references that were generated by the _normalizeContain() function.
None found |
_correctStrategy(\Cake\ORM\EagerLoadable $loadable) : void
Changes the association fetching strategy if required because of duplicate under the same direct associations chain
\Cake\ORM\EagerLoadable | $loadable | The association config |
None found |
_resolveJoins(array $associations, array $matching = array()) : array
Helper function used to compile a list of all associations that can be joined in the query.
array | $associations | list of associations from which to obtain joins. |
array | $matching | list of associations that should be forcibly joined. |
None found |
_buildAssociationsMap(array $map, array $level, boolean $matching = false) : array
An internal method to build a map which is used for the return value of the associationsMap() method.
array | $map | An initial array for the map. |
array | $level | An array of EagerLoadable instances. |
boolean | $matching | Whether or not it is an association loaded through |
None found |
_collectKeys(array $external, \Cake\ORM\Query $query, \Cake\Database\Statement\BufferedStatement $statement) : array
Helper function used to return the keys from the query records that will be used to eagerly load associations.
array | $external | the list of external associations to be loaded |
\Cake\ORM\Query | $query | The query from which the results where generated |
\Cake\Database\Statement\BufferedStatement | $statement | The statement to work on |
None found |
_groupKeys(\Cake\Database\Statement\BufferedStatement $statement, array $collectKeys) : array
Helper function used to iterate a statement and extract the columns defined in $collectKeys
\Cake\Database\Statement\BufferedStatement | $statement | The statement to read from. |
array | $collectKeys | The keys to collect |
None found |