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() protectedAppends any conditions required to load the relevant set of records in the target table query given a filter key and some filtering values. 
-  _addFilteringJoin() publicAppends 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. 
-  _assertFieldsPresent() protectedChecks that the fetching query either has auto fields on or has the foreignKey fields selected. If the required fields are missing, throws an exception. 
-  _buildQuery() protectedAuxiliary 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() protectedBuilds 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() protectedReturns 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() protectedReturns 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() protectedReturns 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() publicReturns 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_assertFieldsPresent()source protected
_assertFieldsPresent( Cake\ORM\Query $fetchQuery , array $key )
Checks that the fetching query either has auto fields on or has the foreignKey fields selected. If the required fields are missing, throws an exception.
Parameters
-  Cake\ORM\Query$fetchQuery
- The association fetching query
-  array $key
- The foreign key fields to check
Throws
InvalidArgumentException_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\QueryThrows
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 $optionsoptional []
- The options containing the strategy to be used.
Returns
booleantrue if a list of keys will be required
    © 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.3/class-Cake.ORM.Association.SelectableAssociationTrait.html