trait QueriesRelationships mixin Builder (View source)

Methods

$this
has($relation, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add a relationship count / exists condition to the query.

$this
hasNested(string $relations, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add nested relationship count / exists conditions to the query.

$this
orHas($relation, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with an "or".

$this
doesntHave($relation, string $boolean = 'and', Closure|null $callback = null)

Add a relationship count / exists condition to the query.

$this
orDoesntHave($relation)

Add a relationship count / exists condition to the query with an "or".

$this
whereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses.

$this
withWhereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses.

$this
orWhereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses and an "or".

$this
whereDoesntHave($relation, Closure|null $callback = null)

Add a relationship count / exists condition to the query with where clauses.

$this
orWhereDoesntHave($relation, Closure|null $callback = null)

Add a relationship count / exists condition to the query with where clauses and an "or".

$this
hasMorph($relation, string|array $types, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query.

TDeclaringModel>
getBelongsToRelation(MorphTo $relation, TRelatedModel> $type)

Get the BelongsTo relationship for a single polymorphic type.

$this
orHasMorph($relation, string|array $types, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with an "or".

$this
doesntHaveMorph($relation, string|array $types, string $boolean = 'and', Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query.

$this
orDoesntHaveMorph($relation, string|array $types)

Add a polymorphic relationship count / exists condition to the query with an "or".

$this
whereHasMorph($relation, string|array $types, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with where clauses.

$this
orWhereHasMorph($relation, string|array $types, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".

$this
whereDoesntHaveMorph($relation, string|array $types, Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query with where clauses.

$this
orWhereDoesntHaveMorph($relation, string|array $types, Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".

$this
whereRelation($relation, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a basic where clause to a relationship query.

$this
orWhereRelation($relation, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add an "or where" clause to a relationship query.

$this
whereMorphRelation($relation, string|array $types, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a polymorphic relationship condition to the query with a where clause.

$this
orWhereMorphRelation($relation, string|array $types, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a polymorphic relationship condition to the query with an "or where" clause.

$this
whereMorphedTo($relation, Model|string|null $model, $boolean = 'and')

Add a morph-to relationship condition to the query.

$this
whereNotMorphedTo($relation, Model|string $model, $boolean = 'and')

Add a not morph-to relationship condition to the query.

$this
orWhereMorphedTo($relation, Model|string|null $model)

Add a morph-to relationship condition to the query with an "or where" clause.

$this
orWhereNotMorphedTo($relation, Model|string $model)

Add a not morph-to relationship condition to the query with an "or where" clause.

$this
whereBelongsTo(Model|Model> $related, string|null $relationshipName = null, string $boolean = 'and')

Add a "belongs to" relationship where clause to the query.

$this
orWhereBelongsTo(Model $related, string|null $relationshipName = null)

Add a "BelongsTo" relationship with an "or where" clause to the query.

$this
withAggregate(mixed $relations, Expression|string $column, string $function = null)

Add subselect queries to include an aggregate value for a relationship.

string
getRelationHashedColumn(string $column, $relation)

Get the relation hashed column name for the given column and relation.

$this
withCount(mixed $relations)

Add subselect queries to count the relations.

$this
withMax(string|array $relation, Expression|string $column)

Add subselect queries to include the max of the relation's column.

$this
withMin(string|array $relation, Expression|string $column)

Add subselect queries to include the min of the relation's column.

$this
withSum(string|array $relation, Expression|string $column)

Add subselect queries to include the sum of the relation's column.

$this
withAvg(string|array $relation, Expression|string $column)

Add subselect queries to include the average of the relation's column.

$this
withExists(string|array $relation)

Add subselect queries to include the existence of related models.

$this
addHasWhere(Builder $hasQuery, Relation $relation, string $operator, int $count, string $boolean)

Add the "has" condition where clause to the query.

$this
mergeConstraintsFrom(Builder $from)

Merge the where constraints from another query to the current query.

array
requalifyWhereTables(array $wheres, string $from, string $to)

Updates the table name for any columns with a new qualified name.

$this
addWhereCountQuery(Builder $query, string $operator = '>=', int $count = 1, string $boolean = 'and')

Add a sub-query count clause to this query.

getRelationWithoutConstraints(string $relation)

Get the "has relation" base query instance.

bool
canUseExistsForExistenceCheck(string $operator, int $count)

Check if we can run an "exists" query to optimize performance.

Details

$this has($relation, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add a relationship count / exists condition to the query.

Parameters

$relation
string $operator
int $count
string $boolean
Closure|null $callback

Return Value

$this

Exceptions

RuntimeException

protected $this hasNested(string $relations, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add nested relationship count / exists conditions to the query.

Sets up recursive call to whereHas until we finish the nested relation.

Parameters

string $relations
string $operator
int $count
string $boolean
Closure|null $callback

Return Value

$this

$this orHas($relation, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with an "or".

Parameters

$relation
string $operator
int $count

Return Value

$this

$this doesntHave($relation, string $boolean = 'and', Closure|null $callback = null)

Add a relationship count / exists condition to the query.

Parameters

$relation
string $boolean
Closure|null $callback

Return Value

$this

$this orDoesntHave($relation)

Add a relationship count / exists condition to the query with an "or".

Parameters

$relation

Return Value

$this

$this whereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses.

Parameters

$relation
Closure|null $callback
string $operator
int $count

Return Value

$this

$this withWhereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses.

Also load the relationship with same condition.

Parameters

$relation
Closure|null $callback
string $operator
int $count

Return Value

$this

$this orWhereHas($relation, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a relationship count / exists condition to the query with where clauses and an "or".

Parameters

$relation
Closure|null $callback
string $operator
int $count

Return Value

$this

$this whereDoesntHave($relation, Closure|null $callback = null)

Add a relationship count / exists condition to the query with where clauses.

Parameters

$relation
Closure|null $callback

Return Value

$this

$this orWhereDoesntHave($relation, Closure|null $callback = null)

Add a relationship count / exists condition to the query with where clauses and an "or".

Parameters

$relation
Closure|null $callback

Return Value

$this

$this hasMorph($relation, string|array $types, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query.

Parameters

$relation
string|array $types
string $operator
int $count
string $boolean
Closure|null $callback

Return Value

$this

protected TDeclaringModel> getBelongsToRelation(MorphTo $relation, TRelatedModel> $type)

Get the BelongsTo relationship for a single polymorphic type.

Parameters

MorphTo $relation
TRelatedModel> $type

Return Value

TDeclaringModel>

$this orHasMorph($relation, string|array $types, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with an "or".

Parameters

$relation
string|array $types
string $operator
int $count

Return Value

$this

$this doesntHaveMorph($relation, string|array $types, string $boolean = 'and', Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query.

Parameters

$relation
string|array $types
string $boolean
Closure|null $callback

Return Value

$this

$this orDoesntHaveMorph($relation, string|array $types)

Add a polymorphic relationship count / exists condition to the query with an "or".

Parameters

$relation
string|array $types

Return Value

$this

$this whereHasMorph($relation, string|array $types, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with where clauses.

Parameters

$relation
string|array $types
Closure|null $callback
string $operator
int $count

Return Value

$this

$this orWhereHasMorph($relation, string|array $types, Closure|null $callback = null, string $operator = '>=', int $count = 1)

Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".

Parameters

$relation
string|array $types
Closure|null $callback
string $operator
int $count

Return Value

$this

$this whereDoesntHaveMorph($relation, string|array $types, Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query with where clauses.

Parameters

$relation
string|array $types
Closure|null $callback

Return Value

$this

$this orWhereDoesntHaveMorph($relation, string|array $types, Closure|null $callback = null)

Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".

Parameters

$relation
string|array $types
Closure|null $callback

Return Value

$this

$this whereRelation($relation, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a basic where clause to a relationship query.

Parameters

$relation
Closure|string|array|Expression $column
mixed $operator
mixed $value

Return Value

$this

$this orWhereRelation($relation, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add an "or where" clause to a relationship query.

Parameters

$relation
Closure|string|array|Expression $column
mixed $operator
mixed $value

Return Value

$this

$this whereMorphRelation($relation, string|array $types, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a polymorphic relationship condition to the query with a where clause.

Parameters

$relation
string|array $types
Closure|string|array|Expression $column
mixed $operator
mixed $value

Return Value

$this

$this orWhereMorphRelation($relation, string|array $types, Closure|string|array|Expression $column, mixed $operator = null, mixed $value = null)

Add a polymorphic relationship condition to the query with an "or where" clause.

Parameters

$relation
string|array $types
Closure|string|array|Expression $column
mixed $operator
mixed $value

Return Value

$this

$this whereMorphedTo($relation, Model|string|null $model, $boolean = 'and')

Add a morph-to relationship condition to the query.

Parameters

$relation
Model|string|null $model
$boolean

Return Value

$this

$this whereNotMorphedTo($relation, Model|string $model, $boolean = 'and')

Add a not morph-to relationship condition to the query.

Parameters

$relation
Model|string $model
$boolean

Return Value

$this

$this orWhereMorphedTo($relation, Model|string|null $model)

Add a morph-to relationship condition to the query with an "or where" clause.

Parameters

$relation
Model|string|null $model

Return Value

$this

$this orWhereNotMorphedTo($relation, Model|string $model)

Add a not morph-to relationship condition to the query with an "or where" clause.

Parameters

$relation
Model|string $model

Return Value

$this

$this whereBelongsTo(Model|Model> $related, string|null $relationshipName = null, string $boolean = 'and')

Add a "belongs to" relationship where clause to the query.

Parameters

Model|Model> $related
string|null $relationshipName
string $boolean

Return Value

$this

Exceptions

RelationNotFoundException

$this orWhereBelongsTo(Model $related, string|null $relationshipName = null)

Add a "BelongsTo" relationship with an "or where" clause to the query.

Parameters

Model $related
string|null $relationshipName

Return Value

$this

Exceptions

RuntimeException

$this withAggregate(mixed $relations, Expression|string $column, string $function = null)

Add subselect queries to include an aggregate value for a relationship.

Parameters

mixed $relations
Expression|string $column
string $function

Return Value

$this

protected string getRelationHashedColumn(string $column, $relation)

Get the relation hashed column name for the given column and relation.

Parameters

string $column
$relation

Return Value

string

$this withCount(mixed $relations)

Add subselect queries to count the relations.

Parameters

mixed $relations

Return Value

$this

$this withMax(string|array $relation, Expression|string $column)

Add subselect queries to include the max of the relation's column.

Parameters

string|array $relation
Expression|string $column

Return Value

$this

$this withMin(string|array $relation, Expression|string $column)

Add subselect queries to include the min of the relation's column.

Parameters

string|array $relation
Expression|string $column

Return Value

$this

$this withSum(string|array $relation, Expression|string $column)

Add subselect queries to include the sum of the relation's column.

Parameters

string|array $relation
Expression|string $column

Return Value

$this

$this withAvg(string|array $relation, Expression|string $column)

Add subselect queries to include the average of the relation's column.

Parameters

string|array $relation
Expression|string $column

Return Value

$this

$this withExists(string|array $relation)

Add subselect queries to include the existence of related models.

Parameters

string|array $relation

Return Value

$this

protected $this addHasWhere(Builder $hasQuery, Relation $relation, string $operator, int $count, string $boolean)

Add the "has" condition where clause to the query.

Parameters

Builder $hasQuery
Relation $relation
string $operator
int $count
string $boolean

Return Value

$this

$this mergeConstraintsFrom(Builder $from)

Merge the where constraints from another query to the current query.

Parameters

Builder $from

Return Value

$this

protected array requalifyWhereTables(array $wheres, string $from, string $to)

Updates the table name for any columns with a new qualified name.

Parameters

array $wheres
string $from
string $to

Return Value

array

protected $this addWhereCountQuery(Builder $query, string $operator = '>=', int $count = 1, string $boolean = 'and')

Add a sub-query count clause to this query.

Parameters

Builder $query
string $operator
int $count
string $boolean

Return Value

$this

protected getRelationWithoutConstraints(string $relation)

Get the "has relation" base query instance.

Parameters

string $relation

protected bool canUseExistsForExistenceCheck(string $operator, int $count)

Check if we can run an "exists" query to optimize performance.

Parameters

string $operator
int $count

Return Value

bool