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 Users

Properties summary

  • $_sort protected
    mixed
    Order in which target records should be returned

Method Summary

  • _buildResultMap() protected
  • _defaultOptions() protected
    Returns the default options to use for the eagerLoader
  • _options() protected
    Parse extra options passed in the constructor.
  • canBeJoined() public
    Whether this association can be expressed directly in a query join
  • foreignKey() public

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

  • sort() public

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

Method Detail

_buildResultMap()source protected

_buildResultMap( $fetchQuery , $options )

_defaultOptions()source protected

_defaultOptions( )

Returns the default options to use for the eagerLoader

Returns

array

_options()source protected

_options( array $opts )

Parse extra options passed in the constructor.

Parameters

array $opts
original list of options passed in constructor

canBeJoined()source 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


defaultRowValue()source public

defaultRowValue( $row , $joined )

foreignKey()source 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

sort()source 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

Methods used from Cake\ORM\Association\SelectableAssociationTrait

_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

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

_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

_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

array
The 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

boolean
true if a list of keys will be required

Properties detail

$_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.2/class-Cake.ORM.Association.ExternalAssociationTrait.html