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

Properties

protected string $joinClass

DataObject that backs the joining table

protected string $localKey

Key that joins to the data class

protected string $foreignKey

Key that joins to the parent class

protected string $foreignClass

Foreign class 'from' property. Normally not needed unless polymorphic.

protected string $parentClass

Class name of instance that owns this list

Methods

public static 
create(mixed ...$args)

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

public static 
singleton(string $class = null)

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

public
__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

public
string
getJoinClass()

No description

public
$this
setJoinClass(mixed $joinClass)

No description

public
string
getLocalKey()

No description

public
$this
setLocalKey(string $localKey)

No description

public
string
getForeignKey()

No description

public
string
getForeignIDKey()

Gets ID key name for foreign key component

public
string|null
getForeignClassKey()

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

public
$this
setForeignKey(string $foreignKey)

No description

public
getParentRelationship(DataQuery $query)

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

public
mixed
extractInheritableQueryParameters(DataQuery $query)

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

public
string
getJoinAlias()

Get name of join table alias for use in queries.

public
beforeGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns, SQLSelect $sqlSelect)

Invoked prior to getFinalisedQuery()

public
afterGetFinalisedQuery(DataQuery $dataQuery, array $queriedColumns, SQLSelect $sqlQuery)

Invoked after getFinalisedQuery()

public
string
getForeignClass()

No description

public
$this
setForeignClass(string $foreignClass)

No description

public
string
getParentClass()

No description

public
setParentClass(string $parentClass)

No description

Details

static Injectable create(mixed ...$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::class); $list = SiteTree::get();

Parameters

mixed ...$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()

No description

Return Value

string

$this setJoinClass(mixed $joinClass)

No description

Parameters

mixed $joinClass

Return Value

$this

string getLocalKey()

No description

Return Value

string

$this setLocalKey(string $localKey)

No description

Parameters

string $localKey

Return Value

$this

string getForeignKey()

No description

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)

No description

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

No description

Return Value

string

$this setForeignClass(string $foreignClass)

No description

Parameters

string $foreignClass

Return Value

$this

string getParentClass()

No description

Return Value

string

ManyManyThroughQueryManipulator setParentClass(string $parentClass)

No description

Parameters

string $parentClass

Return Value

ManyManyThroughQueryManipulator