MorphTo
class MorphTo extends BelongsTo (View source)
Traits
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 |
protected TRelatedModel | $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 protected bool | $constraints | Indicates if the relation is adding constraints. |
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 Closure|array|bool | $withDefault | Indicates if a default model instance should be used. |
from SupportsDefaultModels |
protected TDeclaringModel | $child | The child model instance of the relation. |
from BelongsTo |
protected string | $foreignKey | The foreign key of the parent model. |
from BelongsTo |
protected string|null | $ownerKey | The associated key on the parent model. |
|
protected string | $relationName | The name of the relationship. |
from BelongsTo |
protected string | $morphType | The type of the polymorphic relation. |
|
protected TDeclaringModel> | $models | The models whose relations are being eager loaded. |
|
protected array | $dictionary | All of the models keyed by ID. |
|
protected array | $macroBuffer | A buffer of dynamic calls to query macros. |
|
protected array | $morphableEagerLoads | A map of relations to load for each individual morph type. |
|
protected array | $morphableEagerLoadCounts | A map of relationship counts to load for each individual morph type. |
|
protected array | $morphableConstraints | A map of constraints to apply for each individual morph type. |
Methods
Forward a method call to the given object.
Forward a method call to the given object, returning $this if the forwarded call returned itself.
Throw a bad method call exception for the given method.
Mix another object into the class.
Dynamically handle calls to the class.
Handle dynamic method calls to the relationship.
Create a new morph to relationship instance.
No description
Get the results of the relationship.
Execute the query and get the first result if it's the sole matching record.
No description
Add the constraints for a relationship count query.
No description
Get a relationship join table hash.
Get all of the primary keys for an array of models.
Get the query builder that will contain the relationship constraints.
Add a whereIn eager constraint for the given set of model keys to be loaded.
Prevent polymorphic relationships from being used without model mappings.
Determine if polymorphic relationships require explicit model mapping.
Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.
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.
Get the alias associated with a custom polymorphic class.
Compare the parent key with the related key.
Get a dictionary key attribute - casting it to a string if necessary.
Return a new model instance in case the relationship does not exist.
Gather the keys from an array of related models.
Associate the model instance to the given parent.
Dissociate previously associated model from the given parent.
Add the constraints for a relationship query on the same table.
Determine if the related model has an auto-incrementing ID.
Get the fully qualified foreign key of the relationship.
No description
Get all of the relation results for a type.
Gather all of the foreign keys for a given type.
Create a new model instance by type.
Match the results for a given type to their parents.
Get the foreign key "type" name.
Get the dictionary used by the relationship.
Specify which relations to load for a given morph type.
Specify which relationship counts to load for a given morph type.
Specify constraints on the query for a given morph type.
Indicate that soft deleted models should be included in the results.
Indicate that soft deleted models should not be included in the results.
Indicate that only soft deleted models should be included in the results.
Details
protected mixed
forwardCallTo(mixed $object, string $method, array $parameters)
Forward a method call to the given object.
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.
static protected never
throwBadMethodCallException(string $method)
Throw a bad method call exception for the given method.
__construct(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation)
Create a new morph to relationship instance.
TRelatedModel>
getEager()
Get the results of the relationship.
Called via eager load method of Eloquent query builder.
TRelatedModel
sole(array|string $columns = ['*'])
Execute the query and get the first result if it's the sole matching record.
TRelatedModel>
getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Add the constraints for a relationship count query.
TRelatedModel>
getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
No description
protected array<int,int|string|null>
getKeys(array $models, string|null $key = null)
Get all of the primary keys for an array of models.
protected TRelatedModel>
getRelationQuery()
Get the query builder that will contain the relationship constraints.
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.
protected string
whereInMethod(Model $model, string $key)
Get the name of the "where in" method for eager loading.
static void
requireMorphMap(bool $requireMorphMap = true)
Prevent polymorphic relationships from being used without model mappings.
static bool
requiresMorphMap()
Determine if polymorphic relationships require explicit model mapping.
static array
enforceMorphMap(array $map, bool $merge = true)
Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.
static Model>>
morphMap(array|null $map = null, bool $merge = true)
Set or get the morph map for polymorphic relations.
static protected Model>>|null
buildMorphMapFromModels(array|null $models = null)
Builds a table-keyed array from model class names.
static Model>|null
getMorphedModel(string $alias)
Get the model associated with a custom polymorphic type.
static int|string
getMorphAlias(string $className)
Get the alias associated with a custom polymorphic class.
bool
isNot(Model|null $model)
Determine if the model is not the related instance of the relationship.
protected bool
compareKeys(mixed $parentKey, mixed $relatedKey)
Compare the parent key with the related key.
protected mixed
getDictionaryKey(mixed $attribute)
Get a dictionary key attribute - casting it to a string if necessary.
$this
withDefault(Closure|array|bool $callback = true)
Return a new model instance in case the relationship does not exist.
TDeclaringModel
associate(TRelatedModel|int|string|null $model)
Associate the model instance to the given parent.
TRelatedModel>
getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Add the constraints for a relationship query on the same table.
protected bool
relationHasIncrementingId()
Determine if the related model has an auto-incrementing ID.
protected array
gatherKeysByType(string $type, string $keyType)
Gather all of the foreign keys for a given type.
protected void
matchToMorphParents(string $type, Collection $results)
Match the results for a given type to their parents.
$this
morphWithCount(array $withCount)
Specify which relationship counts to load for a given morph type.
protected TRelatedModel>
replayMacros(Builder $query)
Replay stored macro calls on the actual related instance.