class HasOneThrough extends HasOneOrManyThrough implements SupportsPartialRelations

Traits

Constants

protected CONSTRAINTS_CONTEXT_KEY

The context key for storing whether constraints are enabled.

Properties

static protected array $macros

The registered string macros.

from  Macroable
protected TRelatedModel> $query

The Eloquent query builder instance.

from  Relation
protected TDeclaringModel $parent

The parent model instance.

from  Relation
$related

The related model instance.

from  Relation
protected bool $eagerKeysWereEmpty

Indicates whether the eagerly loaded relation should implicitly return an empty collection.

from  Relation
static Model>> $morphMap

An array to map morph names to their class names in the database.

from  Relation
static protected bool $requireMorphMap

Prevents morph relationships without a morph map.

from  Relation
static protected int $selfJoinCount

The count of self joins.

from  Relation
protected TIntermediateModel $throughParent

The "through" parent model instance.

from  HasOneOrManyThrough
protected TDeclaringModel $farParent

The far parent model instance.

from  HasOneOrManyThrough
protected string $firstKey

The near key on the relationship.

from  HasOneOrManyThrough
protected string $secondKey

The far key on the relationship.

from  HasOneOrManyThrough
protected string $localKey

The local key on the relationship.

from  HasOneOrManyThrough
protected string $secondLocalKey

The local key on the intermediary model.

from  HasOneOrManyThrough
protected bool $isOneOfMany

Determines whether the relationship is one-of-many.

from  CanBeOneOfMany
protected string $relationName

The name of the relationship.

from  CanBeOneOfMany
protected Builder<mixed>|null $oneOfManySubQuery

The one of many inner join subselect query builder instance.

from  CanBeOneOfMany
protected Closure|array|bool $withDefault

Indicates if a default model instance should be used.

from  SupportsDefaultModels

Methods

mixed
forwardCallTo(mixed $object, string $method, array $parameters)

Forward a method call to the given object.

mixed
forwardDecoratedCallTo(mixed $object, string $method, array $parameters)

Forward a method call to the given object, returning $this if the forwarded call returned itself.

static never
throwBadMethodCallException(string $method)

Throw a bad method call exception for the given method.

static void
macro(string $name, callable|object $macro)

Register a custom macro.

static void
mixin(object $mixin, bool $replace = true)

Mix another object into the class.

static bool
hasMacro(string $name)

Check if macro is registered.

static void
flushMacros()

Flush the existing macros.

static mixed
__callStatic(string $method, array $parameters)

Dynamically handle calls to the class.

mixed
__call(string $method, array $parameters)

Dynamically handle calls to the class.

__construct(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)

Create a new has many through relationship instance.

static mixed
noConstraints(Closure $callback)

Run a callback with constraints disabled on the relation.

from  Relation
static bool
shouldAddConstraints()

Determine if constraints should be added to the relation query.

from  Relation
void
addConstraints()

Set the base constraints on the relation query.

void
addEagerConstraints(array $models)

Set the constraints for an eager load of the relation.

array
initRelation(array $models, string $relation)

Initialize the relation on a set of models.

array
match(array $models, Collection $results, string $relation)

Match the eagerly loaded results to their parents.

TResult
getResults()

Get the results of the relationship.

getEager()

Get the relationship for eager loading.

from  Relation
sole(array|string $columns = ['*'])

Execute the query and get the first result if it's the sole matching record.

from  Relation
get(array $columns = ['*'])

Execute the query as a "select" statement.

void
touch()

Touch all of the related models for the relationship.

from  Relation
int
rawUpdate(array $attributes = [])

Run a raw update against the base query.

from  Relation
getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)

Add the constraints for a relationship count query.

from  Relation
getRelationExistenceQuery(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for an internal relationship existence query.

string
getRelationCountHash(bool $incrementJoinCount = true)

Get a relationship join table hash.

from  Relation
array
getKeys(array $models, string|null $key = null)

Get all of the primary keys for an array of models.

from  Relation
getRelationQuery()

Get the query builder that will contain the relationship constraints.

getQuery()

Get the underlying query for the relation.

from  Relation
getBaseQuery()

Get the base query builder driving the Eloquent builder.

from  Relation
toBase()

Get a base query builder instance.

from  Relation
getParent()

Get the parent model of the relation.

from  Relation
string
getQualifiedParentKeyName()

Get the fully qualified parent key name.

getRelated()

Get the related model of the relation.

from  Relation
string
createdAt()

Get the name of the "created at" column.

from  Relation
string
updatedAt()

Get the name of the "updated at" column.

from  Relation
string
relatedUpdatedAt()

Get the name of the related model's "updated at" column.

from  Relation
void
whereInEager(string $whereIn, string $key, array $modelKeys, Builder|null $query = null)

Add a whereIn eager constraint for the given set of model keys to be loaded.

from  Relation
string
whereInMethod(Model $model, string $key)

Get the name of the "where in" method for eager loading.

from  Relation
static void
requireMorphMap(bool $requireMorphMap = true)

Prevent polymorphic relationships from being used without model mappings.

from  Relation
static bool
requiresMorphMap()

Determine if polymorphic relationships require explicit model mapping.

from  Relation
static array
enforceMorphMap(array $map, bool $merge = true)

Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.

from  Relation
static array
morphMap(array|null $map = null, bool $merge = true)

Set or get the morph map for polymorphic relations.

from  Relation
static array|null
buildMorphMapFromModels(array|null $models = null)

Builds a table-keyed array from model class names.

from  Relation
static string|null
getMorphedModel(string $alias)

Get the model associated with a custom polymorphic type.

from  Relation
static int|string
getMorphAlias(string $className)

Get the alias associated with a custom polymorphic class.

from  Relation
static void
flushState()

Flush all static state.

from  Relation
void
__clone()

Force a clone of the underlying query builder when cloning.

from  Relation
mixed
getDictionaryKey(mixed $attribute)

Get a dictionary key attribute - casting it to a string if necessary.

void
performJoin(Builder|null $query = null)

Set the join clause on the query.

bool
throughParentSoftDeletes()

Determine whether "through" parent of the relation uses Soft Deletes.

withTrashedParents()

Indicate that trashed "through" parents should be included in the query.

array
buildDictionary(Collection $results)

Build model dictionary keyed by the relation's foreign key.

firstOrNew(array $attributes = [], array $values = [])

Get the first related model record matching the attributes or instantiate it.

firstOrCreate(array $attributes = [], Closure|array $values = [])

Get the first record matching the attributes. If the record is not found, create it.

createOrFirst(array $attributes = [], Closure|array $values = [])

Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.

updateOrCreate(array $attributes, array $values = [])

Create or update a related record matching the attributes, and fill it with values.

Model|null
firstWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')

Add a basic where clause to the query, and return the first result.

Model|null
first(array $columns = ['*'])

Execute the query and get the first related model.

firstOrFail(array $columns = ['*'])

Execute the query and get the first result or throw an exception.

mixed
firstOr(Closure|array $columns = ['*'], Closure|null $callback = null)

Execute the query and get the first result or call a callback.

find(mixed $id, array $columns = ['*'])

Find a related model by its primary key.

findSole(mixed $id, array $columns = ['*'])

Find a sole related model by its primary key.

findMany(Arrayable|array $ids, array $columns = ['*'])

Find multiple related models by their primary keys.

findOrFail(mixed $id, array $columns = ['*'])

Find a related model by its primary key or throw an exception.

mixed
findOr(mixed $id, Closure|array|string $columns = ['*'], Closure|null $callback = null)

Find a related model by its primary key or call a callback.

mixed
paginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)

Get a paginator for the "select" statement.

mixed
simplePaginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)

Paginate the given query into a simple paginator.

mixed
cursorPaginate(int|null $perPage = null, array $columns = ['*'], string $cursorName = 'cursor', string|null $cursor = null)

Paginate the given query into a cursor paginator.

array
shouldSelect(array $columns = ['*'])

Set the select clause for the relation query.

bool
chunk(int $count, callable $callback)

Chunk the results of the query.

bool
chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)

Chunk the results of a query by comparing numeric IDs.

bool
chunkByIdDesc(int $count, callable $callback, string|null $column = null, string|null $alias = null)

Chunk the results of a query by comparing IDs in descending order.

bool
eachById(callable $callback, int $count = 1000, string|null $column = null, string|null $alias = null)

Execute a callback over each item while chunking by ID.

mixed
cursor()

Get a generator for the given query.

bool
each(callable $callback, int $count = 1000)

Execute a callback over each item while chunking.

mixed
lazy(int $chunkSize = 1000)

Query lazily, by chunks of the given size.

mixed
lazyById(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)

Query lazily, by chunking the results of a query by comparing IDs.

mixed
lazyByIdDesc(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)

Query lazily, by chunking the results of a query by comparing IDs in descending order.

prepareQueryBuilder(array $columns = ['*'])

Prepare the query builder for query execution.

getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for a relationship query on the same table.

getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for a relationship query on the same table as the through parent.

take(int $value)

Alias to set the "limit" value of the query.

limit(int $value)

Set the "limit" value of the query.

string
getQualifiedFarKeyName()

Get the qualified foreign key on the related model.

string
getFirstKeyName()

Get the foreign key on the "through" model.

string
getQualifiedFirstKeyName()

Get the qualified foreign key on the "through" model.

string
getForeignKeyName()

Get the foreign key on the related model.

string
getQualifiedForeignKeyName()

Get the qualified foreign key on the related model.

string
getLocalKeyName()

Get the local key on the far parent model.

string
getQualifiedLocalKeyName()

Get the qualified local key on the far parent model.

string
getSecondLocalKeyName()

Get the local key on the intermediary model.

bool
is(Model|null $model)

Determine if the model is the related instance of the relationship.

bool
isNot(Model|null $model)

Determine if the model is not the related instance of the relationship.

mixed
getParentKey()

No description

mixed
getRelatedKeyFrom(Model $model)

No description

bool
compareKeys(mixed $parentKey, mixed $relatedKey)

Compare the parent key with the related key.

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

No description

array|string
void
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.

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.

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, array|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, array $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.

Builder|null
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.

newRelatedInstanceFor(Model $parent)

Make a new related instance for the given model.

withDefault(Closure|array|bool $callback = true)

Return a new model instance in case the relationship does not exist.

Model|null
getDefaultFor(Model $parent)

Get the default value for this relation.

Details

in ForwardsCalls at line 22
protected mixed forwardCallTo(mixed $object, string $method, array $parameters)

Forward a method call to the given object.

Parameters

mixed $object
string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

in ForwardsCalls at line 52
protected mixed forwardDecoratedCallTo(mixed $object, string $method, array $parameters)

Forward a method call to the given object, returning $this if the forwarded call returned itself.

Parameters

mixed $object
string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

in ForwardsCalls at line 66
static protected never throwBadMethodCallException(string $method)

Throw a bad method call exception for the given method.

Parameters

string $method

Return Value

never

Exceptions

BadMethodCallException

in Macroable at line 28
static void macro(string $name, callable|object $macro)

Register a custom macro.

Boot-only. Macros persist in a static property for the worker lifetime and apply to every subsequent call on the macroable class.

Parameters

string $name
callable|object $macro

Return Value

void

in Macroable at line 41
static void mixin(object $mixin, bool $replace = true)

Mix another object into the class.

Boot-only. Delegates to macro() for each method; registered macros persist in a static property for the worker lifetime.

Parameters

object $mixin
bool $replace

Return Value

void

Exceptions

ReflectionException

in Macroable at line 57
static bool hasMacro(string $name)

Check if macro is registered.

Parameters

string $name

Return Value

bool

in Macroable at line 68
static void flushMacros()

Flush the existing macros.

Boot or tests only. Clears worker-wide macros; concurrent coroutines may resolve different methods depending on timing.

Return Value

void

in Macroable at line 78
static mixed __callStatic(string $method, array $parameters)

Dynamically handle calls to the class.

Parameters

string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

in Macroable at line 103
mixed __call(string $method, array $parameters)

Dynamically handle calls to the class.

Parameters

string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

__construct(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)

Create a new has many through relationship instance.

Parameters

Builder $query
Model $farParent
Model $throughParent
string $firstKey
string $secondKey
string $localKey
string $secondLocalKey

in Relation at line 105
static mixed noConstraints(Closure $callback)

Run a callback with constraints disabled on the relation.

Parameters

Closure $callback

Return Value

mixed

in Relation at line 124
static bool shouldAddConstraints()

Determine if constraints should be added to the relation query.

Return Value

bool

void addConstraints()

Set the base constraints on the relation query.

Return Value

void

in HasOneOrManyThrough at line 149
void addEagerConstraints(array $models)

Set the constraints for an eager load of the relation.

Parameters

array $models

Return Value

void

at line 40
array initRelation(array $models, string $relation)

Initialize the relation on a set of models.

Parameters

array $models
string $relation

Return Value

array

at line 49
array match(array $models, Collection $results, string $relation)

Match the eagerly loaded results to their parents.

Parameters

array $models
Collection $results
string $relation

Return Value

array

at line 31
TResult getResults()

Get the results of the relationship.

Return Value

TResult

in Relation at line 170
Collection getEager()

Get the relationship for eager loading.

Return Value

Collection

in Relation at line 185
Model sole(array|string $columns = ['*'])

Execute the query and get the first result if it's the sole matching record.

Parameters

array|string $columns

Return Value

Model

Exceptions

TRelatedModel>
MultipleRecordsFoundException

in HasOneOrManyThrough at line 420
Collection get(array $columns = ['*'])

Execute the query as a "select" statement.

Parameters

array $columns

Return Value

Collection

in Relation at line 216
void touch()

Touch all of the related models for the relationship.

Return Value

void

in Relation at line 230
int rawUpdate(array $attributes = [])

Run a raw update against the base query.

Parameters

array $attributes

Return Value

int

in Relation at line 242
Builder getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)

Add the constraints for a relationship count query.

Parameters

Builder $query
Builder $parentQuery

Return Value

Builder

at line 72
Builder getRelationExistenceQuery(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for an internal relationship existence query.

Essentially, these queries compare on column names like whereColumn.

Parameters

Builder $query
Builder $parentQuery
mixed $columns

Return Value

Builder

in Relation at line 272
string getRelationCountHash(bool $incrementJoinCount = true)

Get a relationship join table hash.

Parameters

bool $incrementJoinCount

Return Value

string

in Relation at line 283
protected array getKeys(array $models, string|null $key = null)

Get all of the primary keys for an array of models.

Parameters

array $models
string|null $key

Return Value

array

in CanBeOneOfMany at line 240
protected Builder getRelationQuery()

Get the query builder that will contain the relationship constraints.

Return Value

Builder

in Relation at line 305
Builder getQuery()

Get the underlying query for the relation.

Return Value

Builder

in Relation at line 313
Builder getBaseQuery()

Get the base query builder driving the Eloquent builder.

Return Value

Builder

in Relation at line 321
Builder toBase()

Get a base query builder instance.

Return Value

Builder

in Relation at line 331
Model getParent()

Get the parent model of the relation.

Return Value

Model

in HasOneOrManyThrough at line 124
string getQualifiedParentKeyName()

Get the fully qualified parent key name.

Return Value

string

in Relation at line 349
Model getRelated()

Get the related model of the relation.

Return Value

Model

in Relation at line 357
string createdAt()

Get the name of the "created at" column.

Return Value

string

in Relation at line 365
string updatedAt()

Get the name of the "updated at" column.

Return Value

string

in Relation at line 373
string relatedUpdatedAt()

Get the name of the related model's "updated at" column.

Return Value

string

in Relation at line 383
protected void whereInEager(string $whereIn, string $key, array $modelKeys, Builder|null $query = null)

Add a whereIn eager constraint for the given set of model keys to be loaded.

Parameters

string $whereIn
string $key
array $modelKeys
Builder|null $query

Return Value

void

in Relation at line 395
protected string whereInMethod(Model $model, string $key)

Get the name of the "where in" method for eager loading.

Parameters

Model $model
string $key

Return Value

string

in Relation at line 409
static void requireMorphMap(bool $requireMorphMap = true)

Prevent polymorphic relationships from being used without model mappings.

Boot-only. The flag persists in a static property for the worker lifetime and applies to every polymorphic resolution across all coroutines.

Parameters

bool $requireMorphMap

Return Value

void

in Relation at line 417
static bool requiresMorphMap()

Determine if polymorphic relationships require explicit model mapping.

Return Value

bool

in Relation at line 430
static array enforceMorphMap(array $map, bool $merge = true)

Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.

Boot-only. Sets both worker-wide morph state (requireMorphMap + morphMap) shared by every coroutine.

Parameters

array $map
bool $merge

Return Value

array

in Relation at line 447
static array morphMap(array|null $map = null, bool $merge = true)

Set or get the morph map for polymorphic relations.

Boot-only when setting. The map persists in a static property for the worker lifetime and applies to every polymorphic resolution across all coroutines.

Parameters

array|null $map
bool $merge

Return Value

array

in Relation at line 466
static protected array|null buildMorphMapFromModels(array|null $models = null)

Builds a table-keyed array from model class names.

Parameters

array|null $models

Return Value

array|null

in Relation at line 483
static string|null getMorphedModel(string $alias)

Get the model associated with a custom polymorphic type.

Parameters

string $alias

Return Value

string|null

in Relation at line 493
static int|string getMorphAlias(string $className)

Get the alias associated with a custom polymorphic class.

Parameters

string $className

Return Value

int|string

in Relation at line 501
static void flushState()

Flush all static state.

Return Value

void

in Relation at line 524
void __clone()

Force a clone of the underlying query builder when cloning.

Return Value

void

protected mixed getDictionaryKey(mixed $attribute)

Get a dictionary key attribute - casting it to a string if necessary.

Parameters

mixed $attribute

Return Value

mixed

Exceptions

InvalidArgumentException

in HasOneOrManyThrough at line 106
protected void performJoin(Builder|null $query = null)

Set the join clause on the query.

Parameters

Builder|null $query

Return Value

void

in HasOneOrManyThrough at line 132
bool throughParentSoftDeletes()

Determine whether "through" parent of the relation uses Soft Deletes.

Return Value

bool

in HasOneOrManyThrough at line 142
HasOneOrManyThrough withTrashedParents()

Indicate that trashed "through" parents should be included in the query.

Return Value

HasOneOrManyThrough

in HasOneOrManyThrough at line 167
protected array buildDictionary(Collection $results)

Build model dictionary keyed by the relation's foreign key.

Parameters

Collection $results

Return Value

array

in HasOneOrManyThrough at line 192
Model firstOrNew(array $attributes = [], array $values = [])

Get the first related model record matching the attributes or instantiate it.

Parameters

array $attributes
array $values

Return Value

Model

in HasOneOrManyThrough at line 206
Model firstOrCreate(array $attributes = [], Closure|array $values = [])

Get the first record matching the attributes. If the record is not found, create it.

Parameters

array $attributes
Closure|array $values

Return Value

Model

in HasOneOrManyThrough at line 220
Model createOrFirst(array $attributes = [], Closure|array $values = [])

Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.

Parameters

array $attributes
Closure|array $values

Return Value

Model

in HasOneOrManyThrough at line 234
Model updateOrCreate(array $attributes, array $values = [])

Create or update a related record matching the attributes, and fill it with values.

Parameters

array $attributes
array $values

Return Value

Model

in HasOneOrManyThrough at line 248
Model|null firstWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')

Add a basic where clause to the query, and return the first result.

Parameters

Closure|string|array $column
mixed $operator
mixed $value
string $boolean

Return Value

Model|null

in HasOneOrManyThrough at line 258
Model|null first(array $columns = ['*'])

Execute the query and get the first related model.

Parameters

array $columns

Return Value

Model|null

in HasOneOrManyThrough at line 272
Model firstOrFail(array $columns = ['*'])

Execute the query and get the first result or throw an exception.

Parameters

array $columns

Return Value

Model

Exceptions

TRelatedModel>

in HasOneOrManyThrough at line 290
mixed firstOr(Closure|array $columns = ['*'], Closure|null $callback = null)

Execute the query and get the first result or call a callback.

Parameters

Closure|array $columns
Closure|null $callback

Return Value

mixed

in HasOneOrManyThrough at line 310
Collection|Model|null find(mixed $id, array $columns = ['*'])

Find a related model by its primary key.

Parameters

mixed $id
array $columns

Return Value

Collection|Model|null

in HasOneOrManyThrough at line 331
Model findSole(mixed $id, array $columns = ['*'])

Find a sole related model by its primary key.

Parameters

mixed $id
array $columns

Return Value

Model

Exceptions

TRelatedModel>
MultipleRecordsFoundException

in HasOneOrManyThrough at line 346
Collection findMany(Arrayable|array $ids, array $columns = ['*'])

Find multiple related models by their primary keys.

Parameters

Arrayable|array $ids
array $columns

Return Value

Collection

in HasOneOrManyThrough at line 367
Collection|Model findOrFail(mixed $id, array $columns = ['*'])

Find a related model by its primary key or throw an exception.

Parameters

mixed $id
array $columns

Return Value

Collection|Model

Exceptions

TRelatedModel>

in HasOneOrManyThrough at line 397
mixed findOr(mixed $id, Closure|array|string $columns = ['*'], Closure|null $callback = null)

Find a related model by its primary key or call a callback.

Parameters

mixed $id
Closure|array|string $columns
Closure|null $callback

Return Value

mixed

in HasOneOrManyThrough at line 443
mixed paginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)

Get a paginator for the "select" statement.

Parameters

int|null $perPage
array $columns
string $pageName
int|null $page

Return Value

mixed

in HasOneOrManyThrough at line 455
mixed simplePaginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)

Paginate the given query into a simple paginator.

Parameters

int|null $perPage
array $columns
string $pageName
int|null $page

Return Value

mixed

in HasOneOrManyThrough at line 467
mixed cursorPaginate(int|null $perPage = null, array $columns = ['*'], string $cursorName = 'cursor', string|null $cursor = null)

Paginate the given query into a cursor paginator.

Parameters

int|null $perPage
array $columns
string $cursorName
string|null $cursor

Return Value

mixed

in HasOneOrManyThrough at line 477
protected array shouldSelect(array $columns = ['*'])

Set the select clause for the relation query.

Parameters

array $columns

Return Value

array

in HasOneOrManyThrough at line 489
bool chunk(int $count, callable $callback)

Chunk the results of the query.

Parameters

int $count
callable $callback

Return Value

bool

in HasOneOrManyThrough at line 497
bool chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)

Chunk the results of a query by comparing numeric IDs.

Parameters

int $count
callable $callback
string|null $column
string|null $alias

Return Value

bool

in HasOneOrManyThrough at line 509
bool chunkByIdDesc(int $count, callable $callback, string|null $column = null, string|null $alias = null)

Chunk the results of a query by comparing IDs in descending order.

Parameters

int $count
callable $callback
string|null $column
string|null $alias

Return Value

bool

in HasOneOrManyThrough at line 521
bool eachById(callable $callback, int $count = 1000, string|null $column = null, string|null $alias = null)

Execute a callback over each item while chunking by ID.

Parameters

callable $callback
int $count
string|null $column
string|null $alias

Return Value

bool

in HasOneOrManyThrough at line 535
mixed cursor()

Get a generator for the given query.

Return Value

mixed

in HasOneOrManyThrough at line 543
bool each(callable $callback, int $count = 1000)

Execute a callback over each item while chunking.

Parameters

callable $callback
int $count

Return Value

bool

in HasOneOrManyThrough at line 559
mixed lazy(int $chunkSize = 1000)

Query lazily, by chunks of the given size.

Parameters

int $chunkSize

Return Value

mixed

in HasOneOrManyThrough at line 569
mixed lazyById(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)

Query lazily, by chunking the results of a query by comparing IDs.

Parameters

int $chunkSize
string|null $column
string|null $alias

Return Value

mixed

in HasOneOrManyThrough at line 583
mixed lazyByIdDesc(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)

Query lazily, by chunking the results of a query by comparing IDs in descending order.

Parameters

int $chunkSize
string|null $column
string|null $alias

Return Value

mixed

in HasOneOrManyThrough at line 597
protected Builder prepareQueryBuilder(array $columns = ['*'])

Prepare the query builder for query execution.

Parameters

array $columns

Return Value

Builder

in HasOneOrManyThrough at line 635
Builder getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for a relationship query on the same table.

Parameters

Builder $query
Builder $parentQuery
mixed $columns

Return Value

Builder

in HasOneOrManyThrough at line 661
Builder getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, mixed $columns = ['*'])

Add the constraints for a relationship query on the same table as the through parent.

Parameters

Builder $query
Builder $parentQuery
mixed $columns

Return Value

Builder

in HasOneOrManyThrough at line 683
HasOneOrManyThrough take(int $value)

Alias to set the "limit" value of the query.

Parameters

int $value

Return Value

HasOneOrManyThrough

in HasOneOrManyThrough at line 693
HasOneOrManyThrough limit(int $value)

Set the "limit" value of the query.

Parameters

int $value

Return Value

HasOneOrManyThrough

in HasOneOrManyThrough at line 715
string getQualifiedFarKeyName()

Get the qualified foreign key on the related model.

Return Value

string

in HasOneOrManyThrough at line 723
string getFirstKeyName()

Get the foreign key on the "through" model.

Return Value

string

in HasOneOrManyThrough at line 731
string getQualifiedFirstKeyName()

Get the qualified foreign key on the "through" model.

Return Value

string

in HasOneOrManyThrough at line 739
string getForeignKeyName()

Get the foreign key on the related model.

Return Value

string

in HasOneOrManyThrough at line 747
string getQualifiedForeignKeyName()

Get the qualified foreign key on the related model.

Return Value

string

in HasOneOrManyThrough at line 755
string getLocalKeyName()

Get the local key on the far parent model.

Return Value

string

in HasOneOrManyThrough at line 763
string getQualifiedLocalKeyName()

Get the qualified local key on the far parent model.

Return Value

string

in HasOneOrManyThrough at line 771
string getSecondLocalKeyName()

Get the local key on the intermediary model.

Return Value

string

bool is(Model|null $model)

Determine if the model is the related instance of the relationship.

Parameters

Model|null $model

Return Value

bool

bool isNot(Model|null $model)

Determine if the model is not the related instance of the relationship.

Parameters

Model|null $model

Return Value

bool

at line 118
mixed getParentKey()

No description

Return Value

mixed

at line 113
protected mixed getRelatedKeyFrom(Model $model)

No description

Parameters

Model $model

Return Value

mixed

protected bool compareKeys(mixed $parentKey, mixed $relatedKey)

Compare the parent key with the related key.

Parameters

mixed $parentKey
mixed $relatedKey

Return Value

bool

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

No description

Parameters

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

Return Value

void

at line 92
array|string getOneOfManySubQuerySelectColumns()

No description

Return Value

array|string

at line 97
void addOneOfManyJoinSubQueryConstraints(JoinClause $join)

No description

Parameters

JoinClause $join

Return Value

void

in CanBeOneOfMany at line 57
CanBeOneOfMany 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

CanBeOneOfMany

Exceptions

InvalidArgumentException

in CanBeOneOfMany at line 137
CanBeOneOfMany 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

CanBeOneOfMany

in CanBeOneOfMany at line 149
CanBeOneOfMany 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

CanBeOneOfMany

in CanBeOneOfMany at line 159
protected string getDefaultOneOfManyJoinAlias(string $relation)

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

Parameters

string $relation

Return Value

string

in CanBeOneOfMany at line 172
protected Builder newOneOfManySubQuery(string|array $groupBy, array|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
array|null $columns
string|null $aggregate

Return Value

Builder

in CanBeOneOfMany at line 208
protected void addOneOfManyJoinSubQuery(Builder $parent, Builder $subQuery, array $on)

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

Parameters

Builder $parent
Builder $subQuery
array $on

Return Value

void

in CanBeOneOfMany at line 228
protected void mergeOneOfManyJoinsTo(Builder $query)

Merge the relationship query joins to the given query builder.

Parameters

Builder $query

Return Value

void

in CanBeOneOfMany at line 252
Builder|null getOneOfManySubQuery()

Get the one of many inner join subselect builder instance.

Return Value

Builder|null

in CanBeOneOfMany at line 260
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

in CanBeOneOfMany at line 268
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

in CanBeOneOfMany at line 276
protected string guessRelationship()

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

Return Value

string

in CanBeOneOfMany at line 284
bool isOneOfMany()

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

Return Value

bool

in CanBeOneOfMany at line 292
string getRelationName()

Get the name of the relationship.

Return Value

string

at line 108
Model newRelatedInstanceFor(Model $parent)

Make a new related instance for the given model.

Parameters

Model $parent

Return Value

Model

SupportsDefaultModels withDefault(Closure|array|bool $callback = true)

Return a new model instance in case the relationship does not exist.

Parameters

Closure|array|bool $callback

Return Value

SupportsDefaultModels

protected Model|null getDefaultFor(Model $parent)

Get the default value for this relation.

Parameters

Model $parent

Return Value

Model|null