MorphTo   class MorphTo extends BelongsTo (View source)  Traits    InteractsWithDictionary      ComparesRelatedModels      InteractsWithDictionary      SupportsDefaultModels      ForwardsCalls      Macroable     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 array  $morphMap An array to map class names to their morph 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 Model  $child The child model instance of the relation. from  BelongsTo    protected string  $foreignKey The foreign key of the parent model. from  BelongsTo    protected string  $ownerKey The associated key on the parent model. from  BelongsTo    protected string  $relationName The name of the relationship. from  BelongsTo    protected string  $morphType The type of the polymorphic relation.     protected Collection  $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    mixed   forwardCallTo(mixed $object, string $method, array $parameters) 
Forward a method call to the given object.  from  ForwardsCalls    mixed   forwardDecoratedCallTo(mixed $object, string $method, array $parameters) 
Forward a method call to the given object, returning $this if the forwarded call returned itself.  from  ForwardsCalls    static void   throwBadMethodCallException(string $method) 
Throw a bad method call exception for the given method.  from  ForwardsCalls    static void   macro(string $name, object|callable $macro) 
Register a custom macro.  from  Macroable    static void   mixin(object $mixin, bool $replace = true) 
Mix another object into the class.  from  Macroable    static bool   hasMacro(string $name) 
Checks if macro is registered.  from  Macroable    static void   flushMacros() 
Flush the existing macros.  from  Macroable    static mixed   __callStatic(string $method, array $parameters) 
Dynamically handle calls to the class.  from  Macroable    mixed   __call(string $method, array $parameters) 
Handle dynamic method calls to the relationship.      void   __construct(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation) 
Create a new morph to relationship instance.      static mixed   noConstraints(Closure $callback) 
Run a callback with constraints disabled on the relation.  from  Relation    void   addConstraints() 
Set the base constraints on the relation query.  from  BelongsTo    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  BelongsTo    array   match(array $models, Collection $results, string $relation) 
Match the eagerly loaded results to their parents.      mixed   getResults() 
Get the results of the relationship.  from  BelongsTo    Collection   getEager() 
Get the results of the relationship.      Model   sole(array|string $columns = ['*']) 
Execute the query and get the first result if it's the sole matching record.  from  Relation    Collection   get(array $columns = ['*']) 
Execute the query as a "select" statement.  from  Relation    void   touch() 
Touch all of the related models for the relationship.      int   rawUpdate(array $attributes = []) 
Run a raw update against the base query.  from  Relation    Builder   getRelationExistenceCountQuery(Builder $query, Builder $parentQuery) 
Add the constraints for a relationship count query.  from  Relation    Builder   getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*']) 
Add the constraints for a relationship query.  from  BelongsTo    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    Builder   getRelationQuery() 
Get the query builder that will contain the relationship constraints.  from  Relation    Builder   getQuery() 
Get the underlying query for the relation.  from  Relation    Builder   getBaseQuery() 
Get the base query builder driving the Eloquent builder.  from  Relation    Builder   toBase() 
Get a base query builder instance.  from  Relation    Model   getParent() 
Get the parent model of the relation.  from  Relation    string   getQualifiedParentKeyName() 
Get the fully qualified parent key name.  from  Relation    Model   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    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 $map = null, bool $merge = true) 
Set or get the morph map for polymorphic relations.  from  Relation    static array|null   buildMorphMapFromModels(array $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    void   __clone() 
Force a clone of the underlying query builder when cloning.  from  Relation    bool   is(Model|null $model) 
Determine if the model is the related instance of the relationship.  from  ComparesRelatedModels    bool   isNot(Model|null $model) 
Determine if the model is not the related instance of the relationship.  from  ComparesRelatedModels    mixed   getParentKey() 
Get the value of the parent model's key.  from  ComparesRelatedModels    mixed   getRelatedKeyFrom(Model $model) 
Get the value of the model's related key.  from  ComparesRelatedModels    bool   compareKeys(mixed $parentKey, mixed $relatedKey) 
Compare the parent key with the related key.  from  ComparesRelatedModels    mixed   getDictionaryKey(mixed $attribute) 
Get a dictionary key attribute - casting it to a string if necessary.  from  InteractsWithDictionary    Model   newRelatedInstanceFor(Model $parent) 
Make a new related instance for the given model.      $this   withDefault(Closure|array|bool $callback = true) 
Return a new model instance in case the relationship does not exist.  from  SupportsDefaultModels    Model|null   getDefaultFor(Model $parent) 
Get the default value for this relation.  from  SupportsDefaultModels    array   getEagerModelKeys(array $models) 
Gather the keys from an array of related models.  from  BelongsTo    Model   associate(Model|int|string|null $model) 
Associate the model instance to the given parent.      Model   dissociate() 
Dissociate previously associated model from the given parent.      Model   disassociate() 
Alias of "dissociate" method.  from  BelongsTo    Builder   getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*']) 
Add the constraints for a relationship query on the same table.  from  BelongsTo    bool   relationHasIncrementingId() 
Determine if the related model has an auto-incrementing ID.  from  BelongsTo    Model   getChild() 
Get the child of the relationship.  from  BelongsTo    string   getForeignKeyName() 
Get the foreign key of the relationship.  from  BelongsTo    string   getQualifiedForeignKeyName() 
Get the fully qualified foreign key of the relationship.  from  BelongsTo    string   getOwnerKeyName() 
Get the associated key of the relationship.  from  BelongsTo    string   getQualifiedOwnerKeyName() 
Get the fully qualified associated key of the relationship.  from  BelongsTo    string   getRelationName() 
Get the name of the relationship.  from  BelongsTo    void   buildDictionary(Collection $models) 
Build a dictionary with the models.      Collection   getResultsByType(string $type) 
Get all of the relation results for a type.      array   gatherKeysByType(string $type, string $keyType) 
Gather all of the foreign keys for a given type.      Model   createModelByType(string $type) 
Create a new model instance by type.      void   matchToMorphParents(string $type, Collection $results) 
Match the results for a given type to their parents.      string   getMorphType() 
Get the foreign key "type" name.      array   getDictionary() 
Get the dictionary used by the relationship.      MorphTo   morphWith(array $with) 
Specify which relations to load for a given morph type.      MorphTo   morphWithCount(array $withCount) 
Specify which relationship counts to load for a given morph type.      MorphTo   constrain(array $callbacks) 
Specify constraints on the query for a given morph type.      Builder   replayMacros(Builder $query) 
Replay stored macro calls on the actual related instance.     Details                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                      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                  static    protected        void
    throwBadMethodCallException(string $method)
           
Throw a bad method call exception for the given method.   Parameters   string $method    Return Value   void    Exceptions   BadMethodCallException                  static            void
    macro(string $name, object|callable $macro)
           
Register a custom macro.   Parameters   string $name    object|callable $macro    Return Value   void                  static            void
    mixin(object $mixin, bool $replace = true)
           
Mix another object into the class.   Parameters   object $mixin    bool $replace    Return Value   void    Exceptions   ReflectionException                  static            bool
    hasMacro(string $name)
           
Checks if macro is registered.   Parameters   string $name    Return Value   bool                  static            void
    flushMacros()
           
Flush the existing macros.   Return Value   void                  static            mixed
    __callStatic(string $method, array $parameters)
           
Dynamically handle calls to the class.   Parameters   string $method    array $parameters    Return Value   mixed    Exceptions   BadMethodCallException                              mixed
    __call(string $method, array $parameters)
           
Handle dynamic method calls to the relationship.   Parameters   string $method    array $parameters    Return Value   mixed                              void
    __construct(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation)
           
Create a new morph to relationship instance.   Parameters   Builder $query    Model $parent    string $foreignKey    string $ownerKey    string $type    string $relation    Return Value   void                  static            mixed
    noConstraints(Closure $callback)
           
Run a callback with constraints disabled on the relation.   Parameters   Closure $callback    Return Value   mixed                              void
    addConstraints()
           
Set the base constraints on the relation query.   Return Value   void                              void
    addEagerConstraints(array $models)
           
Set the constraints for an eager load of the relation.   Parameters   array $models    Return Value   void                              array
    initRelation(array $models, string $relation)
           
Initialize the relation on a set of models.   Parameters   array $models    string $relation    Return Value   array                              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                              mixed
    getResults()
           
Get the results of the relationship.   Return Value   mixed         Collection
    getEager()
           
Get the results of the relationship.
Called via eager load method of Eloquent query builder.   Return Value   Collection         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   Model>    MultipleRecordsFoundException         Collection
    get(array $columns = ['*'])
           
Execute the query as a "select" statement.   Parameters   array $columns    Return Value   Collection                              void
    touch()
           
Touch all of the related models for the relationship.   Return Value   void                              int
    rawUpdate(array $attributes = [])
           
Run a raw update against the base query.   Parameters   array $attributes    Return Value   int         Builder
    getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
           
Add the constraints for a relationship count query.   Parameters   Builder $query    Builder $parentQuery    Return Value   Builder         Builder
    getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
           
Add the constraints for a relationship query.   Parameters   Builder $query    Builder $parentQuery    array|mixed $columns    Return Value   Builder                              string
    getRelationCountHash(bool $incrementJoinCount = true)
           
Get a relationship join table hash.   Parameters   bool $incrementJoinCount    Return Value   string                      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                      protected        Builder
    getRelationQuery()
           
Get the query builder that will contain the relationship constraints.   Return Value   Builder         Builder
    getQuery()
           
Get the underlying query for the relation.   Return Value   Builder         Builder
    getBaseQuery()
           
Get the base query builder driving the Eloquent builder.   Return Value   Builder         Builder
    toBase()
           
Get a base query builder instance.   Return Value   Builder         Model
    getParent()
           
Get the parent model of the relation.   Return Value   Model                              string
    getQualifiedParentKeyName()
           
Get the fully qualified parent key name.   Return Value   string         Model
    getRelated()
           
Get the related model of the relation.   Return Value   Model                              string
    createdAt()
           
Get the name of the "created at" column.   Return Value   string                              string
    updatedAt()
           
Get the name of the "updated at" column.   Return Value   string                              string
    relatedUpdatedAt()
           
Get the name of the related model's "updated at" column.   Return Value   string                      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                  static            void
    requireMorphMap(bool $requireMorphMap = true)
           
Prevent polymorphic relationships from being used without model mappings.   Parameters   bool $requireMorphMap    Return Value   void                  static            bool
    requiresMorphMap()
           
Determine if polymorphic relationships require explicit model mapping.   Return Value   bool                  static            array
    enforceMorphMap(array $map, bool $merge = true)
           
Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped.   Parameters   array $map    bool $merge    Return Value   array                  static            array
    morphMap(array $map = null, bool $merge = true)
           
Set or get the morph map for polymorphic relations.   Parameters   array $map    bool $merge    Return Value   array                  static    protected        array|null
    buildMorphMapFromModels(array $models = null)
           
Builds a table-keyed array from model class names.   Parameters   array $models    Return Value   array|null                  static            string|null
    getMorphedModel(string $alias)
           
Get the model associated with a custom polymorphic type.   Parameters   string $alias    Return Value   string|null                              void
    __clone()
           
Force a clone of the underlying query builder when cloning.   Return Value   void                              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              abstract                mixed
    getParentKey()
           
Get the value of the parent model's key.   Return Value   mixed              abstract        protected        mixed
    getRelatedKeyFrom(Model $model)
           
Get the value of the model's related key.   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                      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                      protected        Model
    newRelatedInstanceFor(Model $parent)
           
Make a new related instance for the given model.   Parameters   Model $parent    Return Value   Model                              $this
    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   $this                      protected        Model|null
    getDefaultFor(Model $parent)
           
Get the default value for this relation.   Parameters   Model $parent    Return Value   
Model|null                      protected        array
    getEagerModelKeys(array $models)
           
Gather the keys from an array of related models.   Parameters   array $models    Return Value   array         Model
    associate(Model|int|string|null $model)
           
Associate the model instance to the given parent.   Parameters   
Model|int|string|null $model    Return Value   Model         Model
    dissociate()
           
Dissociate previously associated model from the given parent.   Return Value   Model         Model
    disassociate()
           
Alias of "dissociate" method.   Return Value   Model         Builder
    getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
           
Add the constraints for a relationship query on the same table.   Parameters   Builder $query    Builder $parentQuery    array|mixed $columns    Return Value   Builder                      protected        bool
    relationHasIncrementingId()
           
Determine if the related model has an auto-incrementing ID.   Return Value   bool         Model
    getChild()
           
Get the child of the relationship.   Return Value   Model                              string
    getForeignKeyName()
           
Get the foreign key of the relationship.   Return Value   string                              string
    getQualifiedForeignKeyName()
           
Get the fully qualified foreign key of the relationship.   Return Value   string                              string
    getOwnerKeyName()
           
Get the associated key of the relationship.   Return Value   string                              string
    getQualifiedOwnerKeyName()
           
Get the fully qualified associated key of the relationship.   Return Value   string                              string
    getRelationName()
           
Get the name of the relationship.   Return Value   string                      protected        void
    buildDictionary(Collection $models)
           
Build a dictionary with the models.   Parameters   Collection $models    Return Value   void                      protected        Collection
    getResultsByType(string $type)
           
Get all of the relation results for a type.   Parameters   string $type    Return Value   Collection                      protected        array
    gatherKeysByType(string $type, string $keyType)
           
Gather all of the foreign keys for a given type.   Parameters   string $type    string $keyType    Return Value   array         Model
    createModelByType(string $type)
           
Create a new model instance by type.   Parameters   string $type    Return Value   Model                      protected        void
    matchToMorphParents(string $type, Collection $results)
           
Match the results for a given type to their parents.   Parameters   string $type    Collection $results    Return Value   void                              string
    getMorphType()
           
Get the foreign key "type" name.   Return Value   string                              array
    getDictionary()
           
Get the dictionary used by the relationship.   Return Value   array         MorphTo
    morphWith(array $with)
           
Specify which relations to load for a given morph type.   Parameters   array $with    Return Value   MorphTo         MorphTo
    morphWithCount(array $withCount)
           
Specify which relationship counts to load for a given morph type.   Parameters   array $withCount    Return Value   MorphTo         MorphTo
    constrain(array $callbacks)
           
Specify constraints on the query for a given morph type.   Parameters   array $callbacks    Return Value   MorphTo                      protected        Builder
    replayMacros(Builder $query)
           
Replay stored macro calls on the actual related instance.   Parameters   Builder $query    Return Value   Builder      

    
{'path': 'public/docs/laravel~9/api/9.x/illuminate/database/eloquent/relations/morphto.html', 'source': 'DevDocs.IO'}