HasManyThrough
class HasManyThrough extends Relation
Traits
Properties
static protected array | $macros | The registered string macros. |
from Macroable |
protected Builder | $query | The Eloquent query builder instance. |
from Relation |
protected Model | $parent | The parent model instance. |
from Relation |
protected Model | $related | The related model instance. |
from Relation |
static protected bool | $constraints | Indicates if the relation is adding constraints. |
from Relation |
static protected array | $morphMap | An array to map class names to their morph names in database. |
from Relation |
protected Model | $throughParent | The "through" parent model instance. |
|
protected Model | $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. |
Methods
Dynamically handle calls to the class.
Dynamically handle calls to the class.
Create a new has many through relationship instance.
Set the base constraints on the relation query.
Set the constraints for an eager load of the relation.
Initialize the relation on a set of models.
Match the eagerly loaded results to their parents.
Get the results of the relationship.
Add the constraints for a relationship count query.
Add the constraints for a relationship query.
Get all of the primary keys for an array of models.
Set or get the morph map for polymorphic relations.
Builds a table-keyed array from model class names.
Get the model associated with a custom polymorphic type.
Determine whether "through" parent of the relation uses Soft Deletes.
Get the first related model record matching the attributes or instantiate it.
Create or update a related record matching the attributes, and fill it with values.
Execute the query and get the first related model.
Execute the query and get the first result or throw an exception.
Find a related model by its primary key.
Find multiple related models by their primary keys.
Find a related model by its primary key or throw an exception.
Execute the query as a "select" statement.
Get a paginator for the "select" statement.
Paginate the given query into a simple paginator.
Set the select clause for the relation query.
Get the key for comparing against the parent key in "has" query.
Get the qualified foreign key on the related model.
Get the qualified foreign key on the related model.
Get the qualified foreign key on the "through" model.
Details
in
Macroable at line 24
static void
macro(string $name, callable $macro)
Register a custom macro.
in
Macroable at line 35
static bool
hasMacro(string $name)
Checks if macro is registered.
in
Macroable at line 49
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
in
Macroable at line 71
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
at line 59
void
__construct(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey)
Create a new has many through relationship instance.
in
Relation at line 79
static mixed
noConstraints(Closure $callback)
Run a callback with constraints disabled on the relation.
at line 75
void
addConstraints()
Set the base constraints on the relation query.
at line 123
void
addEagerConstraints(array $models)
Set the constraints for an eager load of the relation.
at line 137
array
initRelation(array $models, string $relation)
Initialize the relation on a set of models.
at line 154
array
match(array $models, Collection $results, string $relation)
Match the eagerly loaded results to their parents.
at line 318
mixed
getResults()
Get the results of the relationship.
in
Relation at line 141
Collection
getEager()
Get the relationship for eager loading.
in
Relation at line 151
void
touch()
Touch all of the related models for the relationship.
in
Relation at line 164
int
rawUpdate(array $attributes = [])
Run a raw update against the base query.
in
Relation at line 176
Builder
getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Add the constraints for a relationship count query.
at line 407
Builder
getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Add the constraints for a relationship query.
in
Relation at line 207
protected array
getKeys(array $models, string $key = null)
Get all of the primary keys for an array of models.
in
Relation at line 229
Builder
getBaseQuery()
Get the base query builder driving the Eloquent builder.
in
Relation at line 249
string
getQualifiedParentKeyName()
Get the fully qualified parent key name.
in
Relation at line 269
string
createdAt()
Get the name of the "created at" column.
in
Relation at line 279
string
updatedAt()
Get the name of the "updated at" column.
in
Relation at line 289
string
relatedUpdatedAt()
Get the name of the related model's "updated at" column.
in
Relation at line 301
static array
morphMap(array $map = null, bool $merge = true)
Set or get the morph map for polymorphic relations.
in
Relation at line 319
static protected array|null
buildMorphMapFromModels(array $models = null)
Builds a table-keyed array from model class names.
in
Relation at line 336
static string|null
getMorphedModel(string $alias)
Get the model associated with a custom polymorphic type.
in
Relation at line 370
void
__clone()
Force a clone of the underlying query builder when cloning.
at line 92
protected void
performJoin(Builder $query = null)
Set the join clause on the query.
at line 110
bool
throughParentSoftDeletes()
Determine whether "through" parent of the relation uses Soft Deletes.
at line 178
protected array
buildDictionary(Collection $results)
Build model dictionary keyed by the relation's foreign key.
at line 198
Model
firstOrNew(array $attributes)
Get the first related model record matching the attributes or instantiate it.
at line 214
Model
updateOrCreate(array $attributes, array $values = [])
Create or update a related record matching the attributes, and fill it with values.
at line 229
mixed
first(array $columns = ['*'])
Execute the query and get the first related model.
at line 244
Model|HasManyThrough
firstOrFail(array $columns = ['*'])
Execute the query and get the first result or throw an exception.
at line 260
Model|Collection|null
find(mixed $id, array $columns = ['*'])
Find a related model by its primary key.
at line 278
Collection
findMany(mixed $ids, array $columns = ['*'])
Find multiple related models by their primary keys.
at line 298
Model|Collection
findOrFail(mixed $id, array $columns = ['*'])
Find a related model by its primary key or throw an exception.
at line 329
Collection
get(array $columns = ['*'])
Execute the query as a "select" statement.
at line 361
LengthAwarePaginator
paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int $page = null)
Get a paginator for the "select" statement.
at line 377
Paginator
simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Paginate the given query into a simple paginator.
at line 390
protected array
shouldSelect(array $columns = ['*'])
Set the select clause for the relation query.
at line 421
string
getExistenceCompareKey()
Get the key for comparing against the parent key in "has" query.
at line 431
string
getQualifiedFarKeyName()
Get the qualified foreign key on the related model.
at line 441
string
getQualifiedForeignKeyName()
Get the qualified foreign key on the related model.
at line 451
string
getQualifiedFirstKeyName()
Get the qualified foreign key on the "through" model.