name: QueriesRelationships class_comment: null dependencies: - name: BadMethodCallException type: class source: BadMethodCallException - name: Closure type: class source: Closure - name: Builder type: class source: Illuminate\Database\Eloquent\Builder - name: Collection type: class source: Illuminate\Database\Eloquent\Collection - name: RelationNotFoundException type: class source: Illuminate\Database\Eloquent\RelationNotFoundException - name: BelongsTo type: class source: Illuminate\Database\Eloquent\Relations\BelongsTo - name: MorphTo type: class source: Illuminate\Database\Eloquent\Relations\MorphTo - name: Relation type: class source: Illuminate\Database\Eloquent\Relations\Relation - name: QueryBuilder type: class source: Illuminate\Database\Query\Builder - name: Expression type: class source: Illuminate\Database\Query\Expression - name: Str type: class source: Illuminate\Support\Str - name: InvalidArgumentException type: class source: InvalidArgumentException properties: [] methods: - name: has visibility: public parameters: - name: relation - name: operator default: '''>' - name: count default: '1' - name: boolean default: '''and''' - name: callback default: 'null' comment: '# @mixin \Illuminate\Database\Eloquent\Builder */ # trait QueriesRelationships # { # /** # * Add a relationship count / exists condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param string $operator # * @param int $count # * @param string $boolean # * @param \Closure|null $callback # * @return $this # * # * @throws \RuntimeException' - name: hasNested visibility: protected parameters: - name: relations - name: operator default: '''>' - name: count default: '1' - name: boolean default: '''and''' - name: callback default: 'null' comment: '# * Add nested relationship count / exists conditions to the query. # * # * Sets up recursive call to whereHas until we finish the nested relation. # * # * @param string $relations # * @param string $operator # * @param int $count # * @param string $boolean # * @param \Closure|null $callback # * @return $this' - name: orHas visibility: public parameters: - name: relation - name: operator default: '''>' - name: count default: '1' comment: '# * Add a relationship count / exists condition to the query with an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param string $operator # * @param int $count # * @return $this' - name: doesntHave visibility: public parameters: - name: relation - name: boolean default: '''and''' - name: callback default: 'null' comment: '# * Add a relationship count / exists condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param string $boolean # * @param \Closure|null $callback # * @return $this' - name: orDoesntHave visibility: public parameters: - name: relation comment: '# * Add a relationship count / exists condition to the query with an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @return $this' - name: whereHas visibility: public parameters: - name: relation - name: callback default: 'null' - name: operator default: '''>' - name: count default: '1' comment: '# * Add a relationship count / exists condition to the query with where clauses. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|null $callback # * @param string $operator # * @param int $count # * @return $this' - name: withWhereHas visibility: public parameters: - name: relation - name: callback default: 'null' - name: operator default: '''>' - name: count default: '1' comment: '# * Add a relationship count / exists condition to the query with where clauses. # * # * Also load the relationship with same condition. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|null $callback # * @param string $operator # * @param int $count # * @return $this' - name: orWhereHas visibility: public parameters: - name: relation - name: callback default: 'null' - name: operator default: '''>' - name: count default: '1' comment: '# * Add a relationship count / exists condition to the query with where clauses and an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|null $callback # * @param string $operator # * @param int $count # * @return $this' - name: whereDoesntHave visibility: public parameters: - name: relation - name: callback default: 'null' comment: '# * Add a relationship count / exists condition to the query with where clauses. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|null $callback # * @return $this' - name: orWhereDoesntHave visibility: public parameters: - name: relation - name: callback default: 'null' comment: '# * Add a relationship count / exists condition to the query with where clauses and an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|null $callback # * @return $this' - name: hasMorph visibility: public parameters: - name: relation - name: types - name: operator default: '''>' - name: count default: '1' - name: boolean default: '''and''' - name: callback default: 'null' comment: '# * Add a polymorphic relationship count / exists condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param string $operator # * @param int $count # * @param string $boolean # * @param \Closure|null $callback # * @return $this' - name: getBelongsToRelation visibility: protected parameters: - name: relation - name: type comment: '# * Get the BelongsTo relationship for a single polymorphic type. # * # * @template TRelatedModel of \Illuminate\Database\Eloquent\Model # * @template TDeclaringModel of \Illuminate\Database\Eloquent\Model # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, TDeclaringModel> $relation # * @param class-string $type # * @return \Illuminate\Database\Eloquent\Relations\BelongsTo' - name: orHasMorph visibility: public parameters: - name: relation - name: types - name: operator default: '''>' - name: count default: '1' comment: '# * Add a polymorphic relationship count / exists condition to the query with an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param string $operator # * @param int $count # * @return $this' - name: doesntHaveMorph visibility: public parameters: - name: relation - name: types - name: boolean default: '''and''' - name: callback default: 'null' comment: '# * Add a polymorphic relationship count / exists condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param string $boolean # * @param \Closure|null $callback # * @return $this' - name: orDoesntHaveMorph visibility: public parameters: - name: relation - name: types comment: '# * Add a polymorphic relationship count / exists condition to the query with an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @return $this' - name: whereHasMorph visibility: public parameters: - name: relation - name: types - name: callback default: 'null' - name: operator default: '''>' - name: count default: '1' comment: '# * Add a polymorphic relationship count / exists condition to the query with where clauses. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|null $callback # * @param string $operator # * @param int $count # * @return $this' - name: orWhereHasMorph visibility: public parameters: - name: relation - name: types - name: callback default: 'null' - name: operator default: '''>' - name: count default: '1' comment: '# * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|null $callback # * @param string $operator # * @param int $count # * @return $this' - name: whereDoesntHaveMorph visibility: public parameters: - name: relation - name: types - name: callback default: 'null' comment: '# * Add a polymorphic relationship count / exists condition to the query with where clauses. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|null $callback # * @return $this' - name: orWhereDoesntHaveMorph visibility: public parameters: - name: relation - name: types - name: callback default: 'null' comment: '# * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|null $callback # * @return $this' - name: whereRelation visibility: public parameters: - name: relation - name: column - name: operator default: 'null' - name: value default: 'null' comment: '# * Add a basic where clause to a relationship query. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column # * @param mixed $operator # * @param mixed $value # * @return $this' - name: orWhereRelation visibility: public parameters: - name: relation - name: column - name: operator default: 'null' - name: value default: 'null' comment: '# * Add an "or where" clause to a relationship query. # * # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>|string $relation # * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column # * @param mixed $operator # * @param mixed $value # * @return $this' - name: whereMorphRelation visibility: public parameters: - name: relation - name: types - name: column - name: operator default: 'null' - name: value default: 'null' comment: '# * Add a polymorphic relationship condition to the query with a where clause. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column # * @param mixed $operator # * @param mixed $value # * @return $this' - name: orWhereMorphRelation visibility: public parameters: - name: relation - name: types - name: column - name: operator default: 'null' - name: value default: 'null' comment: '# * Add a polymorphic relationship condition to the query with an "or where" clause. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param string|array $types # * @param \Closure|string|array|\Illuminate\Contracts\Database\Query\Expression $column # * @param mixed $operator # * @param mixed $value # * @return $this' - name: whereMorphedTo visibility: public parameters: - name: relation - name: model - name: boolean default: '''and''' comment: '# * Add a morph-to relationship condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param \Illuminate\Database\Eloquent\Model|string|null $model # * @return $this' - name: whereNotMorphedTo visibility: public parameters: - name: relation - name: model - name: boolean default: '''and''' comment: '# * Add a not morph-to relationship condition to the query. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param \Illuminate\Database\Eloquent\Model|string $model # * @return $this' - name: orWhereMorphedTo visibility: public parameters: - name: relation - name: model comment: '# * Add a morph-to relationship condition to the query with an "or where" clause. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param \Illuminate\Database\Eloquent\Model|string|null $model # * @return $this' - name: orWhereNotMorphedTo visibility: public parameters: - name: relation - name: model comment: '# * Add a not morph-to relationship condition to the query with an "or where" clause. # * # * @param \Illuminate\Database\Eloquent\Relations\MorphTo<*, *>|string $relation # * @param \Illuminate\Database\Eloquent\Model|string $model # * @return $this' - name: whereBelongsTo visibility: public parameters: - name: related - name: relationshipName default: 'null' - name: boolean default: '''and''' comment: '# * Add a "belongs to" relationship where clause to the query. # * # * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection $related # * @param string|null $relationshipName # * @param string $boolean # * @return $this # * # * @throws \Illuminate\Database\Eloquent\RelationNotFoundException' - name: orWhereBelongsTo visibility: public parameters: - name: related - name: relationshipName default: 'null' comment: '# * Add an "BelongsTo" relationship with an "or where" clause to the query. # * # * @param \Illuminate\Database\Eloquent\Model $related # * @param string|null $relationshipName # * @return $this # * # * @throws \RuntimeException' - name: withAggregate visibility: public parameters: - name: relations - name: column - name: function default: 'null' comment: '# * Add subselect queries to include an aggregate value for a relationship. # * # * @param mixed $relations # * @param \Illuminate\Contracts\Database\Query\Expression|string $column # * @param string $function # * @return $this' - name: getRelationHashedColumn visibility: protected parameters: - name: column - name: relation comment: '# * Get the relation hashed column name for the given column and relation. # * # * @param string $column # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *> $relation # * @return string' - name: withCount visibility: public parameters: - name: relations comment: '# * Add subselect queries to count the relations. # * # * @param mixed $relations # * @return $this' - name: withMax visibility: public parameters: - name: relation - name: column comment: '# * Add subselect queries to include the max of the relation''s column. # * # * @param string|array $relation # * @param \Illuminate\Contracts\Database\Query\Expression|string $column # * @return $this' - name: withMin visibility: public parameters: - name: relation - name: column comment: '# * Add subselect queries to include the min of the relation''s column. # * # * @param string|array $relation # * @param \Illuminate\Contracts\Database\Query\Expression|string $column # * @return $this' - name: withSum visibility: public parameters: - name: relation - name: column comment: '# * Add subselect queries to include the sum of the relation''s column. # * # * @param string|array $relation # * @param \Illuminate\Contracts\Database\Query\Expression|string $column # * @return $this' - name: withAvg visibility: public parameters: - name: relation - name: column comment: '# * Add subselect queries to include the average of the relation''s column. # * # * @param string|array $relation # * @param \Illuminate\Contracts\Database\Query\Expression|string $column # * @return $this' - name: withExists visibility: public parameters: - name: relation comment: '# * Add subselect queries to include the existence of related models. # * # * @param string|array $relation # * @return $this' - name: addHasWhere visibility: protected parameters: - name: hasQuery - name: relation - name: operator - name: count - name: boolean comment: '# * Add the "has" condition where clause to the query. # * # * @param \Illuminate\Database\Eloquent\Builder<*> $hasQuery # * @param \Illuminate\Database\Eloquent\Relations\Relation<*, *, *> $relation # * @param string $operator # * @param int $count # * @param string $boolean # * @return $this' - name: mergeConstraintsFrom visibility: public parameters: - name: from comment: '# * Merge the where constraints from another query to the current query. # * # * @param \Illuminate\Database\Eloquent\Builder<*> $from # * @return $this' - name: requalifyWhereTables visibility: protected parameters: - name: wheres - name: from - name: to comment: '# * Updates the table name for any columns with a new qualified name. # * # * @param array $wheres # * @param string $from # * @param string $to # * @return array' - name: addWhereCountQuery visibility: protected parameters: - name: query - name: operator default: '''>' - name: count default: '1' - name: boolean default: '''and''' comment: '# * Add a sub-query count clause to this query. # * # * @param \Illuminate\Database\Query\Builder $query # * @param string $operator # * @param int $count # * @param string $boolean # * @return $this' - name: getRelationWithoutConstraints visibility: protected parameters: - name: relation comment: '# * Get the "has relation" base query instance. # * # * @param string $relation # * @return \Illuminate\Database\Eloquent\Relations\Relation<*, *, *>' - name: canUseExistsForExistenceCheck visibility: protected parameters: - name: operator - name: count comment: '# * Check if we can run an "exists" query to optimize performance. # * # * @param string $operator # * @param int $count # * @return bool' traits: - BadMethodCallException - Closure - Illuminate\Database\Eloquent\Builder - Illuminate\Database\Eloquent\Collection - Illuminate\Database\Eloquent\RelationNotFoundException - Illuminate\Database\Eloquent\Relations\BelongsTo - Illuminate\Database\Eloquent\Relations\MorphTo - Illuminate\Database\Eloquent\Relations\Relation - Illuminate\Database\Query\Expression - Illuminate\Support\Str - InvalidArgumentException interfaces: []