name: Relation class_comment: null dependencies: - name: Closure type: class source: Closure - name: BuilderContract type: class source: Illuminate\Contracts\Database\Eloquent\Builder - name: Builder type: class source: Illuminate\Database\Eloquent\Builder - name: Collection type: class source: Illuminate\Database\Eloquent\Collection - name: Model type: class source: Illuminate\Database\Eloquent\Model - name: ModelNotFoundException type: class source: Illuminate\Database\Eloquent\ModelNotFoundException - name: MultipleRecordsFoundException type: class source: Illuminate\Database\MultipleRecordsFoundException - name: Expression type: class source: Illuminate\Database\Query\Expression - name: ForwardsCalls type: class source: Illuminate\Support\Traits\ForwardsCalls - name: Macroable type: class source: Illuminate\Support\Traits\Macroable properties: - name: query visibility: protected comment: "# * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n\ # * @template TDeclaringModel of \\Illuminate\\Database\\Eloquent\\Model\n# *\ \ @template TResult\n# *\n# * @mixin \\Illuminate\\Database\\Eloquent\\Builder\n\ # */\n# abstract class Relation implements BuilderContract\n# {\n# use ForwardsCalls,\ \ Macroable {\n# Macroable::__call as macroCall;\n# }\n# \n# /**\n# * The Eloquent\ \ query builder instance.\n# *\n# * @var \\Illuminate\\Database\\Eloquent\\Builder" - name: parent visibility: protected comment: '# * The parent model instance. # * # * @var TDeclaringModel' - name: related visibility: protected comment: '# * The related model instance. # * # * @var TRelatedModel' - name: eagerKeysWereEmpty visibility: protected comment: '# * Indicates whether the eagerly loaded relation should implicitly return an empty collection. # * # * @var bool' - name: constraints visibility: protected comment: '# * Indicates if the relation is adding constraints. # * # * @var bool' - name: morphMap visibility: public comment: '# * An array to map class names to their morph names in the database. # * # * @var array' - name: requireMorphMap visibility: protected comment: '# * Prevents morph relationships without a morph map. # * # * @var bool' - name: selfJoinCount visibility: protected comment: '# * The count of self joins. # * # * @var int' methods: - name: __construct visibility: public parameters: - name: query - name: parent comment: "# * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n\ # * @template TDeclaringModel of \\Illuminate\\Database\\Eloquent\\Model\n# *\ \ @template TResult\n# *\n# * @mixin \\Illuminate\\Database\\Eloquent\\Builder\n\ # */\n# abstract class Relation implements BuilderContract\n# {\n# use ForwardsCalls,\ \ Macroable {\n# Macroable::__call as macroCall;\n# }\n# \n# /**\n# * The Eloquent\ \ query builder instance.\n# *\n# * @var \\Illuminate\\Database\\Eloquent\\Builder\n\ # */\n# protected $query;\n# \n# /**\n# * The parent model instance.\n# *\n# *\ \ @var TDeclaringModel\n# */\n# protected $parent;\n# \n# /**\n# * The related\ \ model instance.\n# *\n# * @var TRelatedModel\n# */\n# protected $related;\n\ # \n# /**\n# * Indicates whether the eagerly loaded relation should implicitly\ \ return an empty collection.\n# *\n# * @var bool\n# */\n# protected $eagerKeysWereEmpty\ \ = false;\n# \n# /**\n# * Indicates if the relation is adding constraints.\n\ # *\n# * @var bool\n# */\n# protected static $constraints = true;\n# \n# /**\n\ # * An array to map class names to their morph names in the database.\n# *\n#\ \ * @var array\n# */\n# public static $morphMap = [];\n# \n# /**\n# * Prevents\ \ morph relationships without a morph map.\n# *\n# * @var bool\n# */\n# protected\ \ static $requireMorphMap = false;\n# \n# /**\n# * The count of self joins.\n\ # *\n# * @var int\n# */\n# protected static $selfJoinCount = 0;\n# \n# /**\n#\ \ * Create a new relation instance.\n# *\n# * @param \\Illuminate\\Database\\\ Eloquent\\Builder $query\n# * @param TDeclaringModel $parent\n\ # * @return void" - name: noConstraints visibility: public parameters: - name: callback comment: '# * Run a callback with constraints disabled on the relation. # * # * @param \Closure $callback # * @return mixed' - name: getEager visibility: public parameters: [] comment: "# * Set the base constraints on the relation query.\n# *\n# * @return\ \ void\n# */\n# abstract public function addConstraints();\n# \n# /**\n# * Set\ \ the constraints for an eager load of the relation.\n# *\n# * @param array $models\n# * @return void\n# */\n# abstract public function\ \ addEagerConstraints(array $models);\n# \n# /**\n# * Initialize the relation\ \ on a set of models.\n# *\n# * @param array $models\n\ # * @param string $relation\n# * @return array\n# */\n\ # abstract public function initRelation(array $models, $relation);\n# \n# /**\n\ # * Match the eagerly loaded results to their parents.\n# *\n# * @param array $models\n# * @param \\Illuminate\\Database\\Eloquent\\Collection $results\n# * @param string $relation\n# * @return array\n# */\n# abstract public function match(array $models, Collection\ \ $results, $relation);\n# \n# /**\n# * Get the results of the relationship.\n\ # *\n# * @return TResult\n# */\n# abstract public function getResults();\n# \n\ # /**\n# * Get the relationship for eager loading.\n# *\n# * @return \\Illuminate\\\ Database\\Eloquent\\Collection" - name: sole visibility: public parameters: - name: columns default: '[''*'']' comment: '# * Execute the query and get the first result if it''s the sole matching record. # * # * @param array|string $columns # * @return TRelatedModel # * # * @throws \Illuminate\Database\Eloquent\ModelNotFoundException # * @throws \Illuminate\Database\MultipleRecordsFoundException' - name: get visibility: public parameters: - name: columns default: '[''*'']' comment: '# * Execute the query as a "select" statement. # * # * @param array $columns # * @return \Illuminate\Database\Eloquent\Collection' - name: touch visibility: public parameters: [] comment: '# * Touch all of the related models for the relationship. # * # * @return void' - name: rawUpdate visibility: public parameters: - name: attributes default: '[]' comment: '# * Run a raw update against the base query. # * # * @param array $attributes # * @return int' - name: getRelationExistenceCountQuery visibility: public parameters: - name: query - name: parentQuery comment: '# * Add the constraints for a relationship count query. # * # * @param \Illuminate\Database\Eloquent\Builder $query # * @param \Illuminate\Database\Eloquent\Builder $parentQuery # * @return \Illuminate\Database\Eloquent\Builder' - name: getRelationExistenceQuery visibility: public parameters: - name: query - name: parentQuery - name: columns default: '[''*'']' comment: '# * Add the constraints for an internal relationship existence query. # * # * Essentially, these queries compare on column names like whereColumn. # * # * @param \Illuminate\Database\Eloquent\Builder $query # * @param \Illuminate\Database\Eloquent\Builder $parentQuery # * @param array|mixed $columns # * @return \Illuminate\Database\Eloquent\Builder' - name: getRelationCountHash visibility: public parameters: - name: incrementJoinCount default: 'true' comment: '# * Get a relationship join table hash. # * # * @param bool $incrementJoinCount # * @return string' - name: getKeys visibility: protected parameters: - name: models - name: key default: 'null' comment: '# * Get all of the primary keys for an array of models. # * # * @param array $models # * @param string|null $key # * @return array' - name: getRelationQuery visibility: protected parameters: [] comment: '# * Get the query builder that will contain the relationship constraints. # * # * @return \Illuminate\Database\Eloquent\Builder' - name: getQuery visibility: public parameters: [] comment: '# * Get the underlying query for the relation. # * # * @return \Illuminate\Database\Eloquent\Builder' - name: getBaseQuery visibility: public parameters: [] comment: '# * Get the base query builder driving the Eloquent builder. # * # * @return \Illuminate\Database\Query\Builder' - name: toBase visibility: public parameters: [] comment: '# * Get a base query builder instance. # * # * @return \Illuminate\Database\Query\Builder' - name: getParent visibility: public parameters: [] comment: '# * Get the parent model of the relation. # * # * @return TDeclaringModel' - name: getQualifiedParentKeyName visibility: public parameters: [] comment: '# * Get the fully qualified parent key name. # * # * @return string' - name: getRelated visibility: public parameters: [] comment: '# * Get the related model of the relation. # * # * @return TRelatedModel' - name: createdAt visibility: public parameters: [] comment: '# * Get the name of the "created at" column. # * # * @return string' - name: updatedAt visibility: public parameters: [] comment: '# * Get the name of the "updated at" column. # * # * @return string' - name: relatedUpdatedAt visibility: public parameters: [] comment: '# * Get the name of the related model''s "updated at" column. # * # * @return string' - name: whereInEager visibility: protected parameters: - name: whereIn - name: key - name: modelKeys - name: query default: 'null' comment: '# * Add a whereIn eager constraint for the given set of model keys to be loaded. # * # * @param string $whereIn # * @param string $key # * @param array $modelKeys # * @param \Illuminate\Database\Eloquent\Builder|null $query # * @return void' - name: whereInMethod visibility: protected parameters: - name: model - name: key comment: '# * Get the name of the "where in" method for eager loading. # * # * @param \Illuminate\Database\Eloquent\Model $model # * @param string $key # * @return string' - name: requireMorphMap visibility: public parameters: - name: requireMorphMap default: 'true' comment: '# * Prevent polymorphic relationships from being used without model mappings. # * # * @param bool $requireMorphMap # * @return void' - name: requiresMorphMap visibility: public parameters: [] comment: '# * Determine if polymorphic relationships require explicit model mapping. # * # * @return bool' - name: enforceMorphMap visibility: public parameters: - name: map - name: merge default: 'true' comment: '# * Define the morph map for polymorphic relations and require all morphed models to be explicitly mapped. # * # * @param array $map # * @param bool $merge # * @return array' - name: morphMap visibility: public parameters: - name: map default: 'null' - name: merge default: 'true' comment: '# * Set or get the morph map for polymorphic relations. # * # * @param array|null $map # * @param bool $merge # * @return array' - name: buildMorphMapFromModels visibility: protected parameters: - name: models default: 'null' comment: '# * Builds a table-keyed array from model class names. # * # * @param string[]|null $models # * @return array|null' - name: getMorphedModel visibility: public parameters: - name: alias comment: '# * Get the model associated with a custom polymorphic type. # * # * @param string $alias # * @return string|null' - name: getMorphAlias visibility: public parameters: - name: className comment: '# * Get the alias associated with a custom polymorphic class. # * # * @param string $className # * @return int|string' - name: __call visibility: public parameters: - name: method - name: parameters comment: '# * Handle dynamic method calls to the relationship. # * # * @param string $method # * @param array $parameters # * @return mixed' - name: __clone visibility: public parameters: [] comment: '# * Force a clone of the underlying query builder when cloning. # * # * @return void' traits: - Closure - Illuminate\Database\Eloquent\Builder - Illuminate\Database\Eloquent\Collection - Illuminate\Database\Eloquent\Model - Illuminate\Database\Eloquent\ModelNotFoundException - Illuminate\Database\MultipleRecordsFoundException - Illuminate\Database\Query\Expression - Illuminate\Support\Traits\ForwardsCalls - Illuminate\Support\Traits\Macroable interfaces: - BuilderContract