class ManyManyThroughQueryManipulator implements DataQueryManipulator (View source)

Injected into DataQuery to augment getFinalisedQuery() with a join table

Traits

A class that can be instantiated or replaced via DI

Methods

static Injectable
create(array ...$args)

An implementation of the factory method, allows you to create an instance of a class

static Injectable
singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

__construct(string $joinClass, string $localKey, string $foreignKey, string $foreignClass = null, string $parentClass = null)

Build query manipulator for a given join table. Additional parameters (foreign key, etc) will be inferred at evaluation from query parameters set via the ManyManyThroughList

string
getJoinClass()

No description

$this
setJoinClass(mixed $joinClass)

No description

string
getLocalKey()

No description

$this
setLocalKey(string $localKey)

No description

string
getForeignKey()

No description

string
getForeignIDKey()

Gets ID key name for foreign key component

string|null
getForeignClassKey()

Gets Class key name for foreign key component (or null if none)

$this
setForeignKey(string $foreignKey)

No description

getParentRelationship(DataQuery $query)

Get has_many relationship between parent and join table (for a given DataQuery)

mixed
extractInheritableQueryParameters(DataQuery $query)

Calculate the query parameters that should be inherited from the base many_many to the nested has_many list.

string
getJoinAlias()

Get name of join table alias for use in queries.

beforeGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns = [], SQLSelect $sqlSelect)

Invoked prior to getFinalisedQuery()

afterGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns = [], SQLSelect $sqlQuery)

Invoked after getFinalisedQuery()

string
getForeignClass()

No description

$this
setForeignClass(string $foreignClass)

No description

string
getParentClass()

No description

setParentClass(string $parentClass)

No description

Details

static Injectable create(array ...$args)

An implementation of the factory method, allows you to create an instance of a class

This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.

This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create('SiteTree'); $list = SiteTree::get();

Parameters

array ...$args

Return Value

Injectable

static Injectable singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).

Parameters

string $class

Optional classname to create, if the called class should not be used

Return Value

Injectable

The singleton instance

__construct(string $joinClass, string $localKey, string $foreignKey, string $foreignClass = null, string $parentClass = null)

Build query manipulator for a given join table. Additional parameters (foreign key, etc) will be inferred at evaluation from query parameters set via the ManyManyThroughList

Parameters

string $joinClass

Class name of the joined dataobject record

string $localKey

The key in the join table that maps to the dataClass' PK.

string $foreignKey

The key in the join table that maps to joined class' PK.

string $foreignClass

the 'from' class name

string $parentClass

Name of parent class. Subclass of $foreignClass

string getJoinClass()

Return Value

string

$this setJoinClass(mixed $joinClass)

Parameters

mixed $joinClass

Return Value

$this

string getLocalKey()

Return Value

string

$this setLocalKey(string $localKey)

Parameters

string $localKey

Return Value

$this

string getForeignKey()

Return Value

string

string getForeignIDKey()

Gets ID key name for foreign key component

Return Value

string

string|null getForeignClassKey()

Gets Class key name for foreign key component (or null if none)

Return Value

string|null

$this setForeignKey(string $foreignKey)

Parameters

string $foreignKey

Return Value

$this

HasManyList getParentRelationship(DataQuery $query)

Get has_many relationship between parent and join table (for a given DataQuery)

Parameters

DataQuery $query

Return Value

HasManyList

mixed extractInheritableQueryParameters(DataQuery $query)

Calculate the query parameters that should be inherited from the base many_many to the nested has_many list.

Parameters

DataQuery $query

Return Value

mixed

string getJoinAlias()

Get name of join table alias for use in queries.

Return Value

string

beforeGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns = [], SQLSelect $sqlSelect)

Invoked prior to getFinalisedQuery()

Parameters

DataQuery $dataQuery
array $queriedColumns
SQLSelect $sqlSelect

afterGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns = [], SQLSelect $sqlQuery)

Invoked after getFinalisedQuery()

Parameters

DataQuery $dataQuery
array $queriedColumns
SQLSelect $sqlQuery

string getForeignClass()

Return Value

string

$this setForeignClass(string $foreignClass)

Parameters

string $foreignClass

Return Value

$this

string getParentClass()

Return Value

string

ManyManyThroughQueryManipulator setParentClass(string $parentClass)

Parameters

string $parentClass

Return Value

ManyManyThroughQueryManipulator