HasRelationships
trait HasRelationships (View source)
Свойства
| protected массив | $relations | Загруженные отношения для модели. | |
| protected массив | $touches | Отношения, которые должны быть обновлены при сохранении. | |
| static массив строк | $manyMethods | Методы отношений «многие ко многим». | |
| static protected массив | $relationResolvers | Обратные вызовы для разрешения отношений. |
Методы
| mixed | relationResolver(string $class, string $key)
Получить динамический разрешитель отношений, если он определен или унаследован, в противном случае вернуть null. | |
| static void | resolveRelationUsing(string $name, Closure $callback)
Определить динамический разрешитель отношений. | |
| HasOne | hasOne(string $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение один-к-одному. | |
| HasOne | newHasOne(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализировать новое отношение один-к-одному. | |
| HasOneThrough | hasOneThrough(string $related, string $through, string|null $firstKey = null, string|null $secondKey = null, string|null $localKey = null, string|null $secondLocalKey = null)
Определить отношение один-через-много. | |
| HasOneThrough | newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Инициализировать новое отношение один-через-много. | |
| MorphOne | morphOne(string $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфное отношение один-к-одному. | |
| MorphOne | newMorphOne(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализировать новое полиморфное отношение один-к-одному. | |
| BelongsTo | belongsTo(string $related, string|null $foreignKey = null, string|null $ownerKey = null, string|null $relation = null)
Определить обратное отношение один-к-одному или многие-к-одному. | |
| BelongsTo | newBelongsTo(Builder $query, Model $child, string $foreignKey, string $ownerKey, string $relation)
Инициализировать новое обратное отношение один-к-одному. | |
| MorphTo | morphTo(string|null $name = null, string|null $type = null, string|null $id = null, string|null $ownerKey = null)
Определить полиморфное обратное отношение один-к-одному или многие-к-одному. | |
| MorphTo | morphEagerTo(string $name, string $type, string $id, string $ownerKey)
Определить полиморфное обратное отношение один-к-одному или многие-к-одному. | |
| MorphTo | morphInstanceTo(string $target, string $name, string $type, string $id, string $ownerKey)
Определить полиморфное обратное отношение один-к-одному или многие-к-одному. | |
| MorphTo | newMorphTo(Builder $query, Model $parent, string $foreignKey, string $ownerKey, string $type, string $relation)
Инициализировать новое полиморфное обратное отношение. | |
| static string | getActualClassNameForMorph(string $class)
Получить фактическое имя класса для заданного полиморфного класса. | |
| string | guessBelongsToRelation()
Предположить имя отношения "belongs to". | |
| PendingHasThroughRelationship | through(string|HasMany|HasOne $relationship)
Создать ожидаемое отношение "has-many-through" или "has-one-through". | |
| HasMany | hasMany(string $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение один-ко-многим. | |
| HasMany | newHasMany(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализировать новое отношение один-ко-многим. | |
| HasManyThrough | hasManyThrough(string $related, string $through, string|null $firstKey = null, string|null $secondKey = null, string|null $localKey = null, string|null $secondLocalKey = null)
Определить отношение "has-many-through". | |
| HasManyThrough | newHasManyThrough(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Инициализировать новое отношение "has-many-through". | |
| MorphMany | morphMany(string $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфное отношение один-ко-многим. | |
| MorphMany | newMorphMany(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализировать новое полиморфное отношение один-ко-многим. | |
| BelongsToMany | belongsToMany(string $related, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, string|null $relation = null)
Определить отношение многие-ко-многим. | |
| BelongsToMany | newBelongsToMany(Builder $query, Model $parent, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null)
Инициализировать новое отношение многие-ко-многим. |
| MorphToMany | morphToMany(string $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, bool $inverse = false)
Определите полиморфное отношение "многие ко многим". | |
| MorphToMany | newMorphToMany(Builder $query, Model $parent, string $name, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null, bool $inverse = false)
Инициализируйте новое отношение MorphToMany. | |
| MorphToMany | morphedByMany(string $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 | guessBelongsToManyRelation()
Получить имя отношения belongsToMany. | |
| string | joiningTable(string $related, Model|null $instance = null)
Получить имя таблицы соединения для отношения "многие ко многим". | |
| string | joiningTableSegment()
Получить часть имени промежуточной таблицы для отношений belongsToMany, соответствующую текущей модели. | |
| bool | touches(string $relation)
Определить, касается ли модель заданного отношения. | |
| void | touchOwners()
Обновить связанные отношения модели. | |
| array | getMorphs(string $name, string $type, string $id)
Получить столбцы полиморфного отношения. | |
| string | getMorphClass()
Получить имя класса для полиморфных отношений. | |
| mixed | newRelatedInstance(string $class)
Создать новый экземпляр модели для связанной модели. | |
| 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)
Установить отношения, которые обновляются при сохранении. |
Подробности
mixed relationResolver(string $class, string $key)
Получить динамический решатель отношений, если он определен или унаследован, или вернуть null.
static void resolveRelationUsing(string $name, Closure $callback)
Определить динамический решатель отношений.
HasOne hasOne(string $related, string|null $foreignKey = null, string|null $localKey = null)
Определить отношение "один ко одному".
protected HasOne newHasOne(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализировать новое отношение HasOne.
HasOneThrough hasOneThrough(string $related, string $through, string|null $firstKey = null, string|null $secondKey = null, string|null $localKey = null, string|null $secondLocalKey = null)
Определить отношение "один ко одному через".
protected HasOneThrough newHasOneThrough(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Создать новую связь HasOneThrough.
MorphOne morphOne(string $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определить полиморфную связь один-к-одному.
protected MorphOne newMorphOne(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализировать новую полиморфную связь один-к-одному.
BelongsTo belongsTo(string $related, string|null $foreignKey = null, string|null $ownerKey = null, string|null $relation = null)
Определить обратную связь один-к-одному или один-ко-многим.
protected BelongsTo newBelongsTo(Builder $query, Model $child, string $foreignKey, string $ownerKey, string $relation)
Инициализировать новую связь BelongsTo.
MorphTo morphTo(string|null $name = null, string|null $type = null, string|null $id = null, string|null $ownerKey = null)
Определить полиморфную, обратную связь один-к-одному или один-ко-многим.
protected MorphTo morphEagerTo(string $name, string $type, string $id, string $ownerKey)
Определить полиморфную, обратную связь один-к-одному или один-ко-многим.
protected MorphTo morphInstanceTo(string $target, string $name, string $type, string $id, string $ownerKey)
Определить полиморфную, обратную связь один-к-одному или один-ко-многим.
protected MorphTo 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".
PendingHasThroughRelationship through(string|HasMany|HasOne $relationship)
Создать ожидаемое отношение has-many-through или has-one-through.
HasMany hasMany(string $related, string|null $foreignKey = null, string|null $localKey = null)
Определение отношения один-ко-многим.
protected HasMany newHasMany(Builder $query, Model $parent, string $foreignKey, string $localKey)
Инициализация нового отношения один-ко-многим.
HasManyThrough hasManyThrough(string $related, string $through, string|null $firstKey = null, string|null $secondKey = null, string|null $localKey = null, string|null $secondLocalKey = null)
Определение отношения has-many-through.
protected HasManyThrough newHasManyThrough(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Инициализация нового отношения HasManyThrough.
MorphMany morphMany(string $related, string $name, string|null $type = null, string|null $id = null, string|null $localKey = null)
Определение полиморфного отношения один-ко-многим.
protected MorphMany newMorphMany(Builder $query, Model $parent, string $type, string $id, string $localKey)
Инициализация нового полиморфного отношения один-ко-многим.
BelongsToMany belongsToMany(string $related, 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 BelongsToMany newBelongsToMany(Builder $query, Model $parent, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null)
Инициализация нового отношения многие-ко-многим.
MorphToMany morphToMany(string $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null, bool $inverse = false)
Определите полиморфное много-ко-много отношение.
protected MorphToMany newMorphToMany(Builder $query, Model $parent, string $name, string $table, string $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string|null $relationName = null, bool $inverse = false)
Инициализировать новое полиморфное много-ко-много отношение.
MorphToMany morphedByMany(string $related, string $name, string|null $table = null, string|null $foreignPivotKey = null, string|null $relatedPivotKey = null, string|null $parentKey = null, string|null $relatedKey = null)
Определите полиморфное обратное много-ко-много отношение.
protected string|null guessBelongsToManyRelation()
Получить имя отношения belongsToMany.
string joiningTable(string $related, Model|null $instance = null)
Получить имя таблицы соединения для много-ко-много отношения.
string joiningTableSegment()
Получить часть имени промежуточной таблицы для отношений belongsToMany.
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/9.x/Illuminate/Database/Eloquent/Concerns/HasRelationships.html