Trait SelectableAssociationTrait

Represents a type of association that that can be fetched using another query

Direct Known Users

Cake\ORM\Association\BelongsTo, Cake\ORM\Association\ExternalAssociationTrait, Cake\ORM\Association\HasOne

Method Detail

_addFilteringConditionsource protected

_addFilteringCondition( Cake\ORM\Query $query , string|array $key , mixed $filter )

Appends any conditions required to load the relevant set of records in the target table query given a filter key and some filtering values.

Parameters

Cake\ORM\Query $query
Target table's query
string|array $key
the fields that should be used for filtering
mixed $filter
the value that should be used to match for $key

Returns

Cake\ORM\Query
\Cake\ORM\Query

_addFilteringJoinsource public

_addFilteringJoin( Cake\ORM\Query $query , string $key , Cake\ORM\Query $subquery )

Appends any conditions required to load the relevant set of records in the target table query given a filter key and some filtering values when the filtering needs to be done using a subquery.

Parameters

Cake\ORM\Query $query
Target table's query
string $key
the fields that should be used for filtering
Cake\ORM\Query $subquery
The Subquery to use for filtering

Returns

Cake\ORM\Query
\Cake\ORM\Query

_buildQuerysource protected

_buildQuery( array $options )

Auxiliary function to construct a new Query object to return all the records in the target table that are associated to those specified in $options from the source table

Parameters

array $options
options accepted by eagerLoader()

Returns

Cake\ORM\Query
\Cake\ORM\Query

Throws

InvalidArgumentException
When a key is required for associations but not selected.

_buildResultMapsource abstract protected

_buildResultMap( Cake\ORM\Query $fetchQuery , array $options )

Builds an array containing the results from fetchQuery indexed by the foreignKey value corresponding to this association.

Parameters

Cake\ORM\Query $fetchQuery
The query to get results from
array $options
The options passed to the eager loader

Returns

array
array

_buildSubquerysource protected

_buildSubquery( Cake\ORM\Query $query )

Builds a query to be used as a condition for filtering records in the target table, it is constructed by cloning the original query that was used to load records in the source table.

Parameters

Cake\ORM\Query $query
the original query used to load source records

Returns

Cake\ORM\Query
\Cake\ORM\Query

_createTupleConditionsource protected

_createTupleCondition( Cake\ORM\Query $query , array $keys , mixed $filter , string $operator )

Returns a TupleComparison object that can be used for matching all the fields from $keys with the tuple values in $filter using the provided operator.

Parameters

Cake\ORM\Query $query
Target table's query
array $keys
the fields that should be used for filtering
mixed $filter
the value that should be used to match for $key
string $operator
The operator for comparing the tuples

Returns

Cake\Database\Expression\TupleComparison
\Cake\Database\Expression\TupleComparison

_defaultOptionssource protected

_defaultOptions( )

Returns the default options to use for the eagerLoader

Returns

array
array

_linkFieldsource abstract protected

_linkField( array $options )

Generates a string used as a table field that contains the values upon which the filter should be applied

Parameters

array $options
The options for getting the link field.

Returns

string|array
string|array

_multiKeysInjectorsource protected

_multiKeysInjector( array $resultMap , array $sourceKeys , string $nestKey )

Returns a callable to be used for each row in a query result set for injecting the eager loaded rows when the matching needs to be done with multiple foreign keys

Parameters

array $resultMap
A keyed arrays containing the target table
array $sourceKeys
An array with aliased keys to match
string $nestKey
The key under which results should be nested

Returns

Closure
\Closure

_resultInjectorsource protected

_resultInjector( Cake\ORM\Query $fetchQuery , array $resultMap , array $options )

Returns a callable to be used for each row in a query result set for injecting the eager loaded rows

Parameters

Cake\ORM\Query $fetchQuery
the Query used to fetch results
array $resultMap
an array with the foreignKey as keys and the corresponding target table results as value.
array $options
The options passed to the eagerLoader method

Returns

Closure
\Closure

_subqueryFieldssource protected

_subqueryFields( Cake\ORM\Query $query )

Calculate the fields that need to participate in a subquery.

Normally this includes the binding key columns. If there is a an ORDER BY, those columns are also included as the fields may be calculated or constant values, that need to be present to ensure the correct association data is loaded.

Parameters

Cake\ORM\Query $query
The query to get fields from.

Returns

array
The list of fields for the subquery.

eagerLoadersource public

eagerLoader( array $options )

requiresKeyssource public

requiresKeys( array $options [] )

Returns true if the eager loading process will require a set of the owning table's binding keys in order to use them as a filter in the finder query.

Parameters

array $options optional []
The options containing the strategy to be used.

Returns

boolean
true if a list of keys will be required

© 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/3.1/class-Cake.ORM.Association.SelectableAssociationTrait.html