On this page
Trait SelectableAssociationTrait
Represents a type of association that that can be fetched using another query
Direct Users
- Cake\ORM\Association\BelongsTo
- Cake\ORM\Association\ExternalAssociationTrait
- Cake\ORM\Association\HasOne
Method Summary
-
_addFilteringCondition() protected
Appends any conditions required to load the relevant set of records in the target table query given a filter key and some filtering values.
-
_addFilteringJoin() public
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.
-
_buildQuery() protected
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
-
Builds an array containing the results from fetchQuery indexed by the foreignKey value corresponding to this association.
-
_buildSubquery() protected
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.
-
_createTupleCondition() protected
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.
-
_defaultOptions() protectedReturns the default options to use for the eagerLoader
-
Generates a string used as a table field that contains the values upon which the filter should be applied
-
_multiKeysInjector() protected
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
-
_resultInjector() protected
Returns a callable to be used for each row in a query result set for injecting the eager loaded rows
-
_subqueryFields() protectedCalculate the fields that need to participate in a subquery.
-
eagerLoader() public
-
requiresKeys() public
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.
Method Detail
_addFilteringCondition()source 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
_addFilteringJoin()source 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
_buildQuery()source 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
Throws
InvalidArgumentExceptionWhen a key is required for associations but not selected.
_buildResultMap()source 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_buildSubquery()source 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
_createTupleCondition()source 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_defaultOptions()source protected
_defaultOptions( )
Returns the default options to use for the eagerLoader
Returns
array_linkField()source 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_multiKeysInjector()source 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_resultInjector()source 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_subqueryFields()source 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
arrayThe list of fields for the subquery.
eagerLoader()source public
eagerLoader( array $options )
requiresKeys()source 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
booleantrue 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.2/class-Cake.ORM.Association.SelectableAssociationTrait.html