HasRelationships
trait HasRelationships (View source)
Свойства
| protected массив | $relations | Загруженные отношения для модели. | |
| protected массив | $touches | Отношения, которые должны быть затронуты при сохранении. | |
| статический массив строк | $manyMethods | Методы отношений "многие ко многим". | |
| статический protected массив | $relationResolvers | Обратные вызовы разрешения отношений. |
Методы
| mixed | relationResolver(string $class, string $key)
Получить динамический разрешитель отношений, если он определён или унаследован, иначе вернуть null. | |
| static void | resolveRelationUsing(string $name, Closure $callback)
Определить динамический разрешитель отношений. | |
| TRelatedModel,$this> | hasOne(TRelatedModel> $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение один-к-одному. | |
| TDeclaringModel> | newHasOne(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализировать новое отношение один-к-одному. | |
| hasOneThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null) Без описания | ||
| newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey) Без описания | ||
| TRelatedModel,$this> | morphOne(TRelatedModel> $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфное отношение один-к-одному. | |
| TDeclaringModel> | newMorphOne(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализировать новое полиморфное отношение один-к-одному. | |
| TRelatedModel,$this> | belongsTo(TRelatedModel> $related, string|null $foreignKey = null, string|null $ownerKey = null, string|null $relation = null)
Определить обратное отношение один-к-одному или один-ко-многим. | |
| TDeclaringModel> | newBelongsTo(Builder $query, Model $child, string $foreignKey, string $ownerKey, string $relation)
Инициализировать новое отношение принадлежности. | |
| Model,$this> | morphTo(string|null $name = null, string|null $type = null, string|null $id = null, string|null $ownerKey = null)
Определить полиморфное, обратное отношение один-к-одному или один-ко-многим. | |
| Model,$this> | morphEagerTo(string $name, string $type, string $id, string $ownerKey)
Определить полиморфное, обратное отношение один-к-одному или один-ко-многим. | |
| Model,$this> | morphInstanceTo(string $target, string $name, string $type, string $id, string $ownerKey)
Определить полиморфное, обратное отношение один-к-одному или один-ко-многим. | |
| TDeclaringModel> | newMorphTo(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation)
Инициализировать новое полиморфное отношение. | |
| static string | getActualClassNameForMorph(string $class)
Получить фактическое имя класса для заданного класса морфинга. | |
| string | guessBelongsToRelation()
Угадать имя отношения «принадлежит». | |
| through($relationship)
Создать ожидаемое отношение «многие-ко-многим» или «один-ко-многим» через посредника. | ||
| TRelatedModel,$this> | hasMany(TRelatedModel> $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение один-ко-многим. | |
| TDeclaringModel> | newHasMany(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализировать новое отношение «один-ко-многим». | |
| hasManyThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null) Без описания | ||
| newHasManyThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey) Без описания | ||
| TRelatedModel,$this> | morphMany(TRelatedModel> $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфное отношение один-ко-многим. | |
| TDeclaringModel> | newMorphMany(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализировать новое полиморфное отношение «один-ко-многим». | |
| TRelatedModel,$this> | belongsToMany(TRelatedModel> $related, string|Model>|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null)
Определить отношение многие-ко-многим. | |
| TDeclaringModel> | newBelongsToMany(Builder $query, Model $parent, string|Model> $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null)
Инициализировать новое отношение «принадлежит многим». | |
| TRelatedModel,$this> | morphToMany(TRelatedModel> $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null, bool $inverse = false)
Определить полиморфное отношение многие-ко-многим. | |
| TDeclaringModel> | newMorphToMany(Builder $query, Model $parent, string $name, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null, bool $inverse = false)
Инициализировать новое полиморфное отношение «многие-ко-многим». | |
| TRelatedModel,$this> | morphedByMany(TRelatedModel> $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null)
Определить полиморфное обратное отношение многие-ко-многим. | |
| string|null | guessBelongsToManyRelation()
Получить имя отношения «принадлежит многим». | |
| string | joiningTable(string $related, Model|null $instance = null)
Получить имя таблицы соединения для отношения многие-ко-многим. | |
| string | joiningTableSegment()
Получить часть имени промежуточной таблицы для отношений «принадлежит многим». | |
| bool | touches(string $relation)
Определить, касается ли модель заданное отношение. |
| void | touchOwners()
Отметить отношения владения модели. | |
| array | getMorphs(string $name, string $type, string $id)
Получить столбцы полиморфных отношений. | |
| string | getMorphClass()
Получить имя класса для полиморфных отношений. | |
| mixed | newRelatedInstance(string $class)
Создать новый экземпляр модели для связанной модели. | |
| mixed | newRelatedThroughInstance(string $class)
Создать новый экземпляр модели для связанной модели "через" (through). | |
| array | getRelations()
Получить все загруженные отношения для экземпляра. | |
| mixed | getRelation(string $relation)
Получить указанное отношение. | |
| bool | relationLoaded(string $key)
Определить, загружено ли данное отношение. | |
| $this | setRelation(string $relation, mixed $value)
Установить данное отношение в модели. | |
| $this | unsetRelation(string $relation)
Удалить загруженное отношение. | |
| $this | setRelations(array $relations)
Установить массив отношений в модели. | |
| $this | withoutRelations()
Создать копию экземпляра и удалить все загруженные отношения. | |
| $this | unsetRelations()
Удалить все загруженные отношения для экземпляра. | |
| array | getTouchedRelations()
Получить отношения, которые затрагиваются при сохранении. | |
| $this | setTouchedRelations(array $touches)
Установить отношения, которые затрагиваются при сохранении. |
Подробности
mixed relationResolver(string $class, string $key)
Получить динамический решатель отношений, если он определен или унаследован, в противном случае вернуть null.
static void resolveRelationUsing(string $name, Closure $callback)
Определить динамический решатель отношений.
TRelatedModel,$this> hasOne(TRelatedModel> $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение один-к-одному.
protected TDeclaringModel> newHasOne(Builder $query, Model $parent, string $foreignKey, string $localKey)
Создать новый объект отношения один-к-одному.
hasOneThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null)
Без описания
protected newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey)
Без описания
TRelatedModel,$this> morphOne(TRelatedModel> $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфное отношение один-к-одному.
protected TDeclaringModel> newMorphOne(Builder $query, Model $parent, string $type, string $id, string $localKey)
Создать новый объект полиморфного отношения один-к-одному.
TRelatedModel,$this> belongsTo(TRelatedModel> $related, string|null $foreignKey = null, string|null $ownerKey = null, string|null $relation = null)
Определить обратное отношение один-к-одному или один-ко-многим.
protected TDeclaringModel> newBelongsTo(Builder $query, Model $child, string $foreignKey, string $ownerKey, string $relation)
Инициализация отношения BelongsTo.
Model,$this> morphTo(string|null $name = null, string|null $type = null, string|null $id = null, string|null $ownerKey = null)
Определение полиморфного, обратного взаимно-однозначного или множественного отношения.
protected Model,$this> morphEagerTo(string $name, string $type, string $id, string $ownerKey)
Определение полиморфного, обратного взаимно-однозначного или множественного отношения.
protected Model,$this> morphInstanceTo(string $target, string $name, string $type, string $id, string $ownerKey)
Определение полиморфного, обратного взаимно-однозначного или множественного отношения.
protected TDeclaringModel> newMorphTo(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation)
Инициализация отношения MorphTo.
static string getActualClassNameForMorph(string $class)
Получение фактического имени класса для заданного класса morph.
protected string guessBelongsToRelation()
Угадывание имени отношения "belongs to".
through($relationship)
Создание ожидаемого отношения has-many-through или has-one-through.
TRelatedModel,$this> hasMany(TRelatedModel> $related, string|null $foreignKey = null, string|null $localKey = null)
Определение отношения один-ко-многим.
protected TDeclaringModel> newHasMany(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализация отношения HasMany.
hasManyThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null)
Без описания
protected newHasManyThrough(Builder $query, Model $farParent, Model $throughParent, $firstKey, $secondKey, $localKey, $secondLocalKey)
Без описания
TRelatedModel,$this> morphMany(TRelatedModel> $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определение полиморфного отношения один-ко-многим.
protected TDeclaringModel> newMorphMany(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализация отношения MorphMany.
TRelatedModel,$this> belongsToMany(TRelatedModel> $related, string|Model>|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null)
Определить отношение «многие ко многим».
protected TDeclaringModel> newBelongsToMany(Builder $query, Model $parent, string|Model> $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null)
Инициализация нового отношения «многие ко многим».
TRelatedModel,$this> morphToMany(TRelatedModel> $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null, bool $inverse = false)
Определить полиморфное отношение «многие ко многим».
protected TDeclaringModel> newMorphToMany(Builder $query, Model $parent, string $name, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null, bool $inverse = false)
Инициализировать новое полиморфное отношение «многие ко многим».
TRelatedModel,$this> morphedByMany(TRelatedModel> $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null)
Определить полиморфное обратное отношение «многие ко многим».
protected string|null guessBelongsToManyRelation()
Получить имя отношения «многие ко многим».
string joiningTable(string $related, Model|null $instance = null)
Получить имя таблицы для соединения при отношении «многие ко многим».
string joiningTableSegment()
Получить часть имени промежуточной таблицы для отношений «многие ко многим».
bool touches(string $relation)
Определить, затрагивает ли модель заданное отношение.
void touchOwners()
Обновить связанные отношения модели.
protected array getMorphs(string $name, string $type, string $id)
Получить столбцы полиморфного отношения.
string getMorphClass()
Получить имя класса для полиморфных отношений.
protected mixed newRelatedInstance(string $class)
Создать новый экземпляр модели для связанной модели.
protected mixed newRelatedThroughInstance(string $class)
Создать новый экземпляр модели для связанной модели через посредника.
array getRelations()
Получить все загруженные отношения для экземпляра.
mixed getRelation(string $relation)
Получить указанное отношение.
bool relationLoaded(string $key)
Определить, загружено ли указанное отношение.
$this setRelation(string $relation, mixed $value)
Установить заданное отношение для модели.
$this unsetRelation(string $relation)
Удалить загруженное отношение.
$this setRelations(array $relations)
Установить массив отношений для модели.
$this withoutRelations()
Создать дубликат экземпляра и удалить все загруженные отношения.
$this unsetRelations()
Удалить все загруженные отношения для экземпляра.
array getTouchedRelations()
Получить отношения, которые затрагиваются при сохранении.
$this setTouchedRelations(array $touches)
Установить отношения, которые затрагиваются при сохранении.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/11.x/Illuminate/Database/Eloquent/Concerns/HasRelationships.html