abstract class HasOneOrManyThrough extends Relation

Traits

Constants

protected CONSTRAINTS_CONTEXT_KEY

The context key for storing whether constraints are enabled.

protected NESTED_CONSTRAINTS_CONTEXT_KEY

The context key for enabling constraints on nested relation attributes.

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 array<int|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.

protected TDeclaringModel $farParent

The far parent model instance.

protected string $firstKey

The near key on the relationship.

protected string $secondKey

The far key on the relationship.

protected string $localKey

The local key on the relationship.

protected string $secondLocalKey

The local key on the intermediary model.

protected array<string, string> $morphConstraints

Morph identities that also constrain one-of-many subqueries.

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 mixed
noConstraintsForRelation(Closure $callback)

Run a callback without constraints while preserving them for nested relation attributes.

from  Relation
static mixed
withoutConstraints(Closure $callback, bool $constraintsForNestedRelations)

Run a callback with the configured relation constraints.

from  Relation
static mixed
withConstraints(Closure $callback)

Run a callback with constraints enabled on the relation.

from  Relation
static mixed
withConstraintsForNestedRelation(Closure $callback)

Run a callback with constraints when resolving a nested relation attribute.

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.

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

Match the eagerly loaded results to their parents.

from  Relation
TResult
getResults()

Get the results of the relationship.

from  Relation
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.

void
updateRelatedKeys(Builder $query, string $column, Collection $keys, array $values)

Update related keys, splitting unbounded queries at the statement binding limit.

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.

from  Relation
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
withCasts(array $casts)

Apply query-time casts to the related model instance.

from  Relation
string
getRelatedClass()

Get the class name of the related model.

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)

Build a table-keyed array from model class names.

from  Relation
static string|null
getMorphedModel(int|string|null $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
clone()

Clone the relationship.

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
int|string|null
getDictionaryKey(mixed $attribute)

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

whereMorphClass(string $column, string $morphClass)

Constrain the relationship to records of the given morph class.

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.

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

Find a related model by its primary key or return a new instance of the related model.

firstOrNew(array $attributes = [], Closure|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.

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

Get the first record matching the attributes, including trashed records, and restore it. If the record is not found, create it.

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

Attempt to create the record. If a unique constraint violation occurs, find the matching record, including trashed records, and restore it.

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

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

array
qualifyRelatedAttributes(array $attributes)

Qualify the given attribute keys with the related model's table.

incrementOrCreate(array $attributes, string $column = 'count', float|int $default = 1, float|int $step = 1, array $extra = [])

Create a related record matching the attributes, or increment the existing record.

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, Closure|int|null $total = 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', 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.

allRelatedIds()

Get all of the IDs for the related models.

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.

chunkMap(callable $callback, int $count = 1000)

Run a map 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.

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 30
static void macro(string $name, callable|object $macro)

Register a custom macro.

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 44
static void mixin(object $mixin, bool $replace = true)

Mix another object into the class.

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 61
static bool hasMacro(string $name)

Check if macro is registered.

Parameters

string $name

Return Value

bool

in Macroable at line 72
static void flushMacros()

Flush the existing macros.

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

Return Value

void

in Macroable at line 83
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 108
mixed __call(string $method, array $parameters)

Dynamically handle calls to the class.

Parameters

string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

at line 87
__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 112
static mixed noConstraints(Closure $callback)

Run a callback with constraints disabled on the relation.

Parameters

Closure $callback

Return Value

mixed

in Relation at line 125
static mixed noConstraintsForRelation(Closure $callback)

Run a callback without constraints while preserving them for nested relation attributes.

Parameters

Closure $callback

Return Value

mixed

in Relation at line 138
static protected mixed withoutConstraints(Closure $callback, bool $constraintsForNestedRelations)

Run a callback with the configured relation constraints.

Parameters

Closure $callback
bool $constraintsForNestedRelations

Return Value

mixed

in Relation at line 165
static mixed withConstraints(Closure $callback)

Run a callback with constraints enabled on the relation.

Parameters

Closure $callback

Return Value

mixed

in Relation at line 186
static mixed withConstraintsForNestedRelation(Closure $callback)

Run a callback with constraints when resolving a nested relation attribute.

Parameters

Closure $callback

Return Value

mixed

in Relation at line 196
static bool shouldAddConstraints()

Determine if constraints should be added to the relation query.

Return Value

bool

at line 102
void addConstraints()

Set the base constraints on the relation query.

Return Value

void

at line 176
void addEagerConstraints(array $models)

Set the constraints for an eager load of the relation.

Parameters

array $models

Return Value

void

in Relation at line 219
abstract array initRelation(array $models, string $relation)

Initialize the relation on a set of models.

Parameters

array $models
string $relation

Return Value

array

in Relation at line 228
abstract 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

in Relation at line 235
abstract TResult getResults()

Get the results of the relationship.

Return Value

TResult

in Relation at line 242
Collection getEager()

Get the relationship for eager loading.

Return Value

Collection

in Relation at line 257
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

at line 546
Collection get(array $columns = ['*'])

Execute the query as a "select" statement.

Parameters

array $columns

Return Value

Collection

at line 620
void touch()

Touch all of the related models for the relationship.

Return Value

void

in Relation at line 305
protected void updateRelatedKeys(Builder $query, string $column, Collection $keys, array $values)

Update related keys, splitting unbounded queries at the statement binding limit.

Parameters

Builder $query
string $column
Collection $keys
array $values

Return Value

void

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

Run a raw update against the base query.

Parameters

array $attributes

Return Value

int

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

Add the constraints for a relationship count query.

Parameters

Builder $query
Builder $parentQuery

Return Value

Builder

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

Add the constraints for an internal relationship existence query.

Unlike Laravel, which inherits Relation's types, the parent query is the declaring model's: Relation's parent here is the intermediate model.

Parameters

Builder $query
Builder $parentQuery
mixed $columns

Return Value

Builder

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

Get a relationship join table hash.

Parameters

bool $incrementJoinCount

Return Value

string

in Relation at line 382
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 Relation at line 394
protected Builder getRelationQuery()

Get the query builder that will contain the relationship constraints.

Return Value

Builder

in Relation at line 404
Builder getQuery()

Get the underlying query for the relation.

Return Value

Builder

in Relation at line 412
Builder getBaseQuery()

Get the base query builder driving the Eloquent builder.

Return Value

Builder

in Relation at line 420
Builder toBase()

Get a base query builder instance.

Return Value

Builder

in Relation at line 430
Model getParent()

Get the parent model of the relation.

Return Value

Model

at line 151
string getQualifiedParentKeyName()

Get the fully-qualified parent key name.

Return Value

string

in Relation at line 448
Model getRelated()

Get the related model of the relation.

Return Value

Model

in Relation at line 456
Relation withCasts(array $casts)

Apply query-time casts to the related model instance.

Parameters

array $casts

Return Value

Relation

in Relation at line 471
string getRelatedClass()

Get the class name of the related model.

Return Value

string

in Relation at line 479
string createdAt()

Get the name of the "created at" column.

Return Value

string

in Relation at line 487
string updatedAt()

Get the name of the "updated at" column.

Return Value

string

in Relation at line 495
string relatedUpdatedAt()

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

Return Value

string

in Relation at line 505
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 517
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 531
static void requireMorphMap(bool $requireMorphMap = true)

Prevent polymorphic relationships from being used without model mappings.

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 540
static bool requiresMorphMap()

Determine if polymorphic relationships require explicit model mapping.

Return Value

bool

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

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

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

Parameters

array $map
bool $merge

Return Value

array

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

Set or get the morph map for polymorphic relations.

A given 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 591
static protected array|null buildMorphMapFromModels(array|null $models = null)

Build a table-keyed array from model class names.

Parameters

array|null $models

Return Value

array|null

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

Get the model associated with a custom polymorphic type.

Parameters

int|string|null $alias

Return Value

string|null

in Relation at line 621
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 631
Relation clone()

Clone the relationship.

Return Value

Relation

in Relation at line 639
static void flushState()

Flush all static state.

Return Value

void

in Relation at line 662
void __clone()

Force a clone of the underlying query builder when cloning.

Return Value

void

protected int|string|null getDictionaryKey(mixed $attribute)

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

Parameters

mixed $attribute

Return Value

int|string|null

Exceptions

InvalidArgumentException

at line 120
HasOneOrManyThrough whereMorphClass(string $column, string $morphClass)

Constrain the relationship to records of the given morph class.

Parameters

string $column
string $morphClass

Return Value

HasOneOrManyThrough

at line 133
protected void performJoin(Builder|null $query = null)

Set the join clause on the query.

Parameters

Builder|null $query

Return Value

void

at line 159
bool throughParentSoftDeletes()

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

Return Value

bool

at line 169
HasOneOrManyThrough withTrashedParents()

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

Return Value

HasOneOrManyThrough

at line 194
protected array buildDictionary(Collection $results)

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

Parameters

Collection $results

Return Value

array

at line 219
Collection|Model findOrNew(mixed $id, array $columns = ['*'])

Find a related model by its primary key or return a new instance of the related model.

Parameters

mixed $id
array $columns

Return Value

Collection|Model

at line 234
Model firstOrNew(array $attributes = [], Closure|array $values = [])

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

Parameters

array $attributes
Closure|array $values

Return Value

Model

at line 249
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

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

Exceptions

UniqueConstraintViolationException

at line 285
Model restoreOrCreate(array $attributes = [], Closure|array $values = [])

Get the first record matching the attributes, including trashed records, and restore it. If the record is not found, create it.

Parameters

array $attributes
Closure|array $values

Return Value

Model

at line 302
Model createOrRestore(array $attributes = [], Closure|array $values = [])

Attempt to create the record. If a unique constraint violation occurs, find the matching record, including trashed records, and restore it.

Parameters

array $attributes
Closure|array $values

Return Value

Model

Exceptions

UniqueConstraintViolationException

at line 317
Model updateOrCreate(array $attributes, Closure|array $values = [])

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

Parameters

array $attributes
Closure|array $values

Return Value

Model

at line 329
protected array qualifyRelatedAttributes(array $attributes)

Qualify the given attribute keys with the related model's table.

Parameters

array $attributes

Return Value

array

at line 341
Model incrementOrCreate(array $attributes, string $column = 'count', float|int $default = 1, float|int $step = 1, array $extra = [])

Create a related record matching the attributes, or increment the existing record.

Parameters

array $attributes
string $column
float|int $default
float|int $step
array $extra

Return Value

Model

at line 355
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

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

Execute the query and get the first related model.

Parameters

array $columns

Return Value

Model|null

at line 379
Model firstOrFail(array $columns = ['*'])

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

Parameters

array $columns

Return Value

Model

Exceptions

TRelatedModel>

at line 397
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

at line 417
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

at line 438
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

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

Find multiple related models by their primary keys.

Parameters

Arrayable|array $ids
array $columns

Return Value

Collection

at line 474
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>

at line 512
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

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

Get a paginator for the "select" statement.

Parameters

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

Return Value

mixed

at line 582
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

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

Paginate the given query into a cursor paginator.

Parameters

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

Return Value

mixed

at line 608
protected array shouldSelect(array $columns = ['*'])

Set the select clause for the relation query.

Parameters

array $columns

Return Value

array

at line 651
Collection allRelatedIds()

Get all of the IDs for the related models.

Return Value

Collection

at line 663
bool chunk(int $count, callable $callback)

Chunk the results of the query.

Parameters

int $count
callable $callback

Return Value

bool

at line 673
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

at line 687
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

at line 701
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

at line 715
mixed cursor()

Get a generator for the given query.

Return Value

mixed

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

Execute a callback over each item while chunking.

Parameters

callable $callback
int $count

Return Value

bool

at line 744
Collection chunkMap(callable $callback, int $count = 1000)

Run a map over each item while chunking.

Parameters

callable $callback
int $count

Return Value

Collection

at line 762
mixed lazy(int $chunkSize = 1000)

Query lazily, by chunks of the given size.

Parameters

int $chunkSize

Return Value

mixed

at line 772
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

at line 786
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

at line 800
protected Builder prepareQueryBuilder(array $columns = ['*'])

Prepare the query builder for query execution.

Parameters

array $columns

Return Value

Builder

at line 845
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

at line 871
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

at line 893
HasOneOrManyThrough take(int $value)

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

Parameters

int $value

Return Value

HasOneOrManyThrough

at line 903
HasOneOrManyThrough limit(int $value)

Set the "limit" value of the query.

Parameters

int $value

Return Value

HasOneOrManyThrough

at line 925
string getQualifiedFarKeyName()

Get the qualified foreign key on the related model.

Return Value

string

at line 933
string getFirstKeyName()

Get the foreign key on the "through" model.

Return Value

string

at line 941
string getQualifiedFirstKeyName()

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

Return Value

string

at line 949
string getForeignKeyName()

Get the foreign key on the related model.

Return Value

string

at line 957
string getQualifiedForeignKeyName()

Get the qualified foreign key on the related model.

Return Value

string

at line 965
string getLocalKeyName()

Get the local key on the far parent model.

Return Value

string

at line 973
string getQualifiedLocalKeyName()

Get the qualified local key on the far parent model.

Return Value

string

at line 981
string getSecondLocalKeyName()

Get the local key on the intermediary model.

Return Value

string