Trait ExternalAssociationTrait

Represents a type of association that that needs to be recovered by performing an extra query.

Cake\ORM\Association\ExternalAssociationTrait uses Cake\ORM\Association\SelectableAssociationTrait

Direct Known Users

Cake\ORM\Association\BelongsToMany, Cake\ORM\Association\HasMany

Method Detail

_buildResultMapsource protected

_buildResultMap( mixed $fetchQuery , mixed $options )

_defaultOptionssource protected

_defaultOptions( )

Returns the default options to use for the eagerLoader

Returns

array
array

_optionssource protected

_options( array $opts )

Parse extra options passed in the constructor.

Parameters

array $opts
original list of options passed in constructor

canBeJoinedsource public

canBeJoined( array $options [] )

Whether this association can be expressed directly in a query join

Parameters

array $options optional []
custom options key that could alter the return value

Returns

boolean
if the 'matching' key in $option is true then this function will return true, false otherwise

defaultRowValuesource public

defaultRowValue( mixed $row , mixed $joined )

foreignKeysource public

foreignKey( string|null $key null )

Sets the name of the field representing the foreign key to the source table. If no parameters are passed current field is returned

Parameters

string|null $key optional null
the key to be used to link both tables together

Returns

string
string

sortsource public

sort( mixed $sort null )

Sets the sort order in which target records should be returned. If no arguments are passed the currently configured value is returned

Parameters

mixed $sort optional null
A find() compatible order clause

Returns

mixed
mixed

Methods used from Cake\ORM\Association\SelectableAssociationTrait

_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.

_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

_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

Properties summary

$_sortsource

protected mixed

Order in which target records should be returned

© 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.ExternalAssociationTrait.html