trait CanBeOneOfMany (View source)

Properties

protected bool $isOneOfMany

Determines whether the relationship is one-of-many.

protected string $relationName

The name of the relationship.

protected $oneOfManySubQuery

The one of many inner join subselect query builder instance.

Methods

void
addOneOfManySubQueryConstraints(Builder $query, string|null $column = null, string|null $aggregate = null)

Add constraints for inner join subselect for one of many relationships.

array|string
getOneOfManySubQuerySelectColumns()

Get the columns the determine the relationship groups.

void
addOneOfManyJoinSubQueryConstraints(JoinClause $join)

Add join query constraints for one of many relationships.

$this
ofMany(string|array|null $column = 'id', string|Closure|null $aggregate = 'MAX', string|null $relation = null)

Indicate that the relation is a single result of a larger one-to-many relationship.

$this
latestOfMany(string|array|null $column = 'id', string|null $relation = null)

Indicate that the relation is the latest single result of a larger one-to-many relationship.

$this
oldestOfMany(string|array|null $column = 'id', string|null $relation = null)

Indicate that the relation is the oldest single result of a larger one-to-many relationship.

string
getDefaultOneOfManyJoinAlias(string $relation)

Get the default alias for the one of many inner join clause.

newOneOfManySubQuery(string|array $groupBy, string[]|null $columns = null, string|null $aggregate = null)

Get a new query for the related model, grouping the query by the given column, often the foreign key of the relationship.

void
addOneOfManyJoinSubQuery(Builder $parent, Builder $subQuery, string[] $on)

Add the join subquery to the given query on the given column and the relationship's foreign key.

void
mergeOneOfManyJoinsTo(Builder $query)

Merge the relationship query joins to the given query builder.

getRelationQuery()

Get the query builder that will contain the relationship constraints.

getOneOfManySubQuery()

Get the one of many inner join subselect builder instance.

string
qualifySubSelectColumn(string $column)

Get the qualified column name for the one-of-many relationship using the subselect join query's alias.

string
qualifyRelatedColumn(string $column)

Qualify related column using the related table name if it is not already qualified.

string
guessRelationship()

Guess the "hasOne" relationship's name via backtrace.

bool
isOneOfMany()

Determine whether the relationship is a one-of-many relationship.

string
getRelationName()

Get the name of the relationship.

Details

abstract void addOneOfManySubQueryConstraints(Builder $query, string|null $column = null, string|null $aggregate = null)

Add constraints for inner join subselect for one of many relationships.

Parameters

Builder $query
string|null $column
string|null $aggregate

Return Value

void

abstract array|string getOneOfManySubQuerySelectColumns()

Get the columns the determine the relationship groups.

Return Value

array|string

abstract void addOneOfManyJoinSubQueryConstraints(JoinClause $join)

Add join query constraints for one of many relationships.

Parameters

JoinClause $join

Return Value

void

$this ofMany(string|array|null $column = 'id', string|Closure|null $aggregate = 'MAX', string|null $relation = null)

Indicate that the relation is a single result of a larger one-to-many relationship.

Parameters

string|array|null $column
string|Closure|null $aggregate
string|null $relation

Return Value

$this

Exceptions

InvalidArgumentException

$this latestOfMany(string|array|null $column = 'id', string|null $relation = null)

Indicate that the relation is the latest single result of a larger one-to-many relationship.

Parameters

string|array|null $column
string|null $relation

Return Value

$this

$this oldestOfMany(string|array|null $column = 'id', string|null $relation = null)

Indicate that the relation is the oldest single result of a larger one-to-many relationship.

Parameters

string|array|null $column
string|null $relation

Return Value

$this

protected string getDefaultOneOfManyJoinAlias(string $relation)

Get the default alias for the one of many inner join clause.

Parameters

string $relation

Return Value

string

protected newOneOfManySubQuery(string|array $groupBy, string[]|null $columns = null, string|null $aggregate = null)

Get a new query for the related model, grouping the query by the given column, often the foreign key of the relationship.

Parameters

string|array $groupBy
string[]|null $columns
string|null $aggregate

protected void addOneOfManyJoinSubQuery(Builder $parent, Builder $subQuery, string[] $on)

Add the join subquery to the given query on the given column and the relationship's foreign key.

Parameters

Builder $parent
Builder $subQuery
string[] $on

Return Value

void

protected void mergeOneOfManyJoinsTo(Builder $query)

Merge the relationship query joins to the given query builder.

Parameters

Builder $query

Return Value

void

protected getRelationQuery()

Get the query builder that will contain the relationship constraints.

getOneOfManySubQuery()

Get the one of many inner join subselect builder instance.

string qualifySubSelectColumn(string $column)

Get the qualified column name for the one-of-many relationship using the subselect join query's alias.

Parameters

string $column

Return Value

string

protected string qualifyRelatedColumn(string $column)

Qualify related column using the related table name if it is not already qualified.

Parameters

string $column

Return Value

string

protected string guessRelationship()

Guess the "hasOne" relationship's name via backtrace.

Return Value

string

bool isOneOfMany()

Determine whether the relationship is a one-of-many relationship.

Return Value

bool

string getRelationName()

Get the name of the relationship.

Return Value

string