MorphToMany
class MorphToMany extends BelongsToMany (View source)
Свойства
| protected Builder | $query | Экземпляр билдера запросов Eloquent. | из Relation |
| protected Model | $parent | Экземпляр родительской модели. | из Relation |
| protected Model | $related | Экземпляр связанной модели. | из Relation |
| static protected bool | $constraints | Указывает, добавляет ли отношение ограничения. | из Relation |
| static protected array | $morphMap | Массив для сопоставления имен классов с их именами морфизма в базе данных. | из Relation |
| protected string | $table | Промежуточная таблица для отношения. | из BelongsToMany |
| protected string | $foreignKey | Внешний ключ родительской модели. | из BelongsToMany |
| protected string | $otherKey | Связанный ключ отношения. | из BelongsToMany |
| protected string | $relationName | Имя отношения. | из BelongsToMany |
| protected array | $pivotColumns | Столбцы промежуточной таблицы для извлечения. | из BelongsToMany |
| protected array | $pivotWheres | Любые ограничения для промежуточной таблицы. | из BelongsToMany |
| protected string | $pivotCreatedAt | Пользовательский столбец промежуточной таблицы для отметки created_at. | из BelongsToMany |
| protected string | $pivotUpdatedAt | Пользовательский столбец промежуточной таблицы для отметки updated_at. | из BelongsToMany |
| protected string | $morphType | Тип полиморфного отношения. | |
| protected string | $morphClass | Имя класса ограничения типа морфизма. | |
| protected bool | $inverse | Указывает, связываем ли мы обратное отношение. |
Методы
| void | __construct(Builder $query, Model $parent, string $name, string $table, string $foreignKey, string $otherKey, string $relationName = null, bool $inverse = false) Создать новый экземпляр связи многие-ко-многим. | |
| void | addConstraints() Установить базовые ограничения для запроса связи. | из BelongsToMany |
| void | addEagerConstraints(array $models) Установить ограничения для жадной загрузки связи. | |
| array | initRelation(array $models, string $relation) Инициализировать связь для набора моделей. | из BelongsToMany |
| array | match(array $models, Collection $results, string $relation) Сопоставить загруженные жадно результаты с их родительскими элементами. | из BelongsToMany |
| mixed | getResults() Получить результаты связи. | из BelongsToMany |
| Collection | getEager() Получить связь для жадной загрузки. | из Relation |
| void | touch() Обновить метку времени для всех связанных моделей в связи. | из BelongsToMany |
| int | rawUpdate(array $attributes = []) Выполнить обновление с использованием SQL-запроса. | из Relation |
| Builder | getRelationCountQuery(Builder $query, Builder $parent) Добавить ограничения для запроса подсчета связи. | |
| static mixed | noConstraints(Closure $callback) Выполнить обратный вызов без ограничений для связи. | из Relation |
| array | getKeys(array $models, string $key = null) Получить все первичные ключи для массива моделей. | из Relation |
| Builder | getQuery() Получить базовый запрос для связи. | из Relation |
| Builder | getBaseQuery() Получить базовый билдер запроса, управляющий билдером Eloquent. | из Relation |
| Model | getParent() Получить родительскую модель связи. | из Relation |
| string | getQualifiedParentKeyName() Получить полное имя родительского ключа. | из Relation |
| Model | getRelated() Получить связанную модель связи. | из Relation |
| string | createdAt() Получить имя колонки "created at". | из BelongsToMany |
| string | updatedAt() Получить имя колонки "updated at". | из BelongsToMany |
| string | relatedUpdatedAt() Получить имя колонки "updated at" связанной модели. | из Relation |
| string | wrap(string $value) Оборачивает значение с использованием грамматики родительского запроса. | из Relation |
| static array | morphMap(array $map = null, bool $merge = true) Установить или получить карту morph для полиморфных связей. | из Relation |
| static array|null | buildMorphMapFromModels(array $models = null) Создает таблично-индексированный массив из имён классов моделей. | из Relation |
| mixed | __call(string $method, array $parameters) Обрабатывает вызовы динамических методов для связи. | из Relation |
| void | __clone() Принудительно клонирует базовый билдер запроса при клонировании. | из Relation |
| BelongsToMany | wherePivot(string $column, string $operator = null, mixed $value = null, string $boolean = 'and') Устанавливает условие where для столбца таблицы промежуточной связи. | из BelongsToMany |
| BelongsToMany | orWherePivot(string $column, string $operator = null, mixed $value = null) Устанавливает условие orWhere для столбца таблицы промежуточной связи. | из BelongsToMany |
| mixed | first(array $columns = ['*']) Выполнить запрос и получить первый результат. | из BelongsToMany |
| Model|BelongsToMany | firstOrFail(array $columns = ['*']) Выполнить запрос и получить первый результат или бросить исключение. | из BelongsToMany |
| Коллекция | get(array $columns = ['*']) Выполнить запрос как операцию «select». | из BelongsToMany |
| LengthAwarePaginator | paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Получить пагинатор для оператора «select». | из BelongsToMany |
| Paginator | simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page') Разбить заданный запрос на простую страницу. | из BelongsToMany |
| bool | chunk(int $count, callable $callback) Разбить результаты запроса на части. | из BelongsToMany |
| void | hydratePivotRelation(array $models) Заполнить связь с таблицей свода для моделей. | из BelongsToMany |
| array | cleanPivotAttributes(Модель $model) Получить атрибуты связи свода из модели. | из BelongsToMany |
| Builder | getRelationCountQueryForSelfJoin(Builder $query, Builder $parent) Добавить ограничения для запроса подсчёта взаимосвязей на одной и той же таблице. | из BelongsToMany |
| string | getRelationCountHash() Получить хеш таблицы присоединения для взаимосвязи. | из BelongsToMany |
| BelongsToMany | getSelectColumns(array $columns = ['*']) Установить предложение select для запроса взаимосвязи. | из BelongsToMany |
| array | getAliasedPivotColumns() Получить столбцы связи свода для взаимосвязи. | из BelongsToMany |
| bool | hasPivotColumn(string $column) Определить, является ли заданный столбец столбцом связи свода. | из BelongsToMany |
| $this | setJoin(Builder|null $query = null) Установить предложение join для запроса взаимосвязи. | из BelongsToMany |
| $this | setWhere() Установить предложение where для запроса взаимосвязи. | |
| array | buildDictionary(Коллекция $results) Создать словарь моделей, индексированный по внешнему ключу взаимосвязи. | из BelongsToMany |
| Коллекция | getRelatedIds() Получить все идентификаторы связанных моделей. | из BelongsToMany |
| Модель | save(Модель $model, array $joining = [], bool $touch = true) Сохранить новую модель и прикрепить её к родительской модели. | из BelongsToMany |
| array | saveMany(Коллекция|array $models, array $joinings = []) Сохранить массив новых моделей и прикрепить их к родительской модели. | из BelongsToMany |
| Модель|Коллекция|null | find(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу. | из BelongsToMany |
| Коллекция | findMany(mixed $ids, array $columns = ['*']) Найти несколько связанных моделей по их первичным ключам. | из BelongsToMany |
| Модель|Коллекция | findOrFail(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу или выбросить исключение. | из BelongsToMany |
| Коллекция|Модель | findOrNew(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу или вернуть новую модель. | из BelongsToMany |
| Модель | firstOrNew(array $attributes) Получить первую связанную модель, соответствующую атрибутам, или создать её. | из BelongsToMany |
| Модель | firstOrCreate(array $attributes, array $joining = [], bool $touch = true) Получить первую соответствующую запись или создать её. | из BelongsToMany |
| Модель | updateOrCreate(array $attributes, array $values = [], array $joining = [], bool $touch = true) Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями. | из BelongsToMany |
| Модель | create(array $attributes, array $joining = [], bool $touch = true) Создать новый экземпляр связанной модели. | из BelongsToMany |
| массив | createMany(array $records, array $joinings = []) Создать массив новых экземпляров связанных моделей. | из BelongsToMany |
| массив | sync(Коллекция|array $ids, bool $detaching = true) Синхронизировать промежуточные таблицы со списком идентификаторов или коллекцией моделей. | из BelongsToMany |
| массив | formatSyncList(array $records) Отформатировать список синхронизации, чтобы ключи были идентификаторами. | из BelongsToMany |
| массив | attachNew(array $records, array $current, bool $touch = true) Прикрепить все идентификаторы, которые отсутствуют в текущем массиве. | из BelongsToMany |
| целое число | updateExistingPivot(mixed $id, array $attributes, bool $touch = true) Обновить существующую запись связующей таблицы. | из BelongsToMany |
| void | attach(mixed $id, array $attributes = [], bool $touch = true) Прикрепить модель к родительской. | из BelongsToMany |
| массив | createAttachRecords(array $ids, array $attributes) Создать массив записей для вставки в таблицу связующей таблицы. | из BelongsToMany |
| массив | attacher(int $key, mixed $value, array $attributes, bool $timed) Создать полную запись о присоединении. | из BelongsToMany |
| массив | getAttachId(mixed $key, mixed $value, array $attributes) Получить идентификатор записи присоединения и дополнительные атрибуты. | из BelongsToMany |
| массив | createAttachRecord(int $id, bool $timed) Создать новую запись присоединения. | |
| массив | setTimestampsOnAttach(array $record, bool $exists = false) Установить метки времени создания и обновления на записи присоединения. | из BelongsToMany |
| целое число | detach(int|array $ids = [], bool $touch = true) Отсоединить модели от отношения. | из BelongsToMany |
| void | touchIfTouching() Если нужно обновить родительскую модель, обновить её. | из BelongsToMany |
| bool | touchingParent() Определить, нужно ли обновлять родительскую модель при синхронизации. | из BelongsToMany |
| строка | guessInverseRelation() Попытка определить имя обратного отношения. | из BelongsToMany |
| Блок | newPivotQuery() Создать новый запрос для таблицы связующей таблицы. | |
| Блок | newPivotStatement() Получить новый простой блок запроса для таблицы связующей таблицы. | из BelongsToMany |
| Блок | newPivotStatementForId(mixed $id) Получить новый запрос для связующей таблицы по заданному ID. | из BelongsToMany |
| Связующая таблица | newPivot(array $attributes = [], bool $exists = false) Создать новый экземпляр модели связующей таблицы. | |
| Связующая таблица | newExistingPivot(array $attributes = []) Создать новый существующий экземпляр модели связующей таблицы. | из BelongsToMany |
| $this | withPivot(array|mixed $columns) Установить столбцы таблицы связующей таблицы для извлечения. | из BelongsToMany |
| BelongsToMany | withTimestamps(mixed $createdAt = null, mixed $updatedAt = null) Указать, что таблица связующей таблицы имеет метки времени создания и обновления. | из BelongsToMany |
| строка | getRelatedFreshUpdate() Получить имя столбца "обновлено" для связанной модели. | из BelongsToMany |
| строка | getHasCompareKey() Получить ключ для сравнения с родительским ключом в запросе "has". | из BelongsToMany |
| строка | getForeignKey() Получить полностью квалифицированный внешний ключ для отношения. | из BelongsToMany |
| строка | getOtherKey() Получить полностью квалифицированный "другой ключ" для отношения. | из BelongsToMany |
| строка | getTable() Получить промежуточную таблицу для отношения. | из BelongsToMany |
| строка | getRelationName() Получить имя отношения для отношения. | из BelongsToMany |
| строка | getMorphType() Получить имя внешнего ключа "тип". |
| string | getMorphClass() Получить имя класса родительской модели. |
Подробности
void __construct(Builder $query, Model $parent, string $name, string $table, string $foreignKey, string $otherKey, string $relationName = null, bool $inverse = false)
Создать новый экземпляр отношения "многие ко многим" через полиморфизм.
void addConstraints()
Установить базовые ограничения на запрос отношения.
void addEagerConstraints(array $models)
Установить ограничения для жадного загрузки отношения.
array initRelation(array $models, string $relation)
Инициализировать отношение на наборе моделей.
array match(array $models, Collection $results, string $relation)
Сопоставить загруженные с жадным запросом результаты с их родителями.
mixed getResults()
Получить результаты отношения.
Collection getEager()
Получить отношение для жадной загрузки.
void touch()
Обновить метки времени для всех связанных моделей в отношении.
Например: Обновить метки времени для всех ролей, связанных с этим пользователем.
int rawUpdate(array $attributes = [])
Выполнить прямое обновление базы данных по основному запросу.
Builder getRelationCountQuery(Builder $query, Builder $parent)
Добавить ограничения для запроса подсчёта отношения.
static mixed noConstraints(Closure $callback)
Выполнить коллбэк без ограничений на отношение.
protected array getKeys(array $models, string $key = null)
Получить все первичные ключи для массива моделей.
Builder getQuery()
Получить базовый запрос для отношения.
Builder getBaseQuery()
Получить базовый билдер запроса, управляющий билдером Eloquent.
Model getParent()
Получить родительскую модель отношения.
string getQualifiedParentKeyName()
Получить полное имя родительского ключа.
Model getRelated()
Получить связанную модель отношения.
string createdAt()
Получить имя колонки "создано в".
string updatedAt()
Получить имя колонки "обновлено в".
string relatedUpdatedAt()
Получить имя колонки "обновлено в" для связанной модели.
string wrap(string $value)
Оборачивает заданное значение с помощью синтаксического анализатора родительского запроса.
static array morphMap(array $map = null, bool $merge = true)
Установить или получить отображение морфизма для полиморфных отношений.
static protected array|null buildMorphMapFromModels(array $models = null)
Создаёт массив с таблицами в качестве ключей из имён классов моделей.
mixed __call(string $method, array $parameters)
Обработка динамических вызовов методов для отношения.
void __clone()
Вынуждает клонирование базового билдера запроса при клонировании.
BelongsToMany wherePivot(string $column, string $operator = null, mixed $value = null, string $boolean = 'and')
Устанавливает условие where для столбца таблицы связей.
BelongsToMany orWherePivot(string $column, string $operator = null, mixed $value = null)
Устанавливает условие or where для столбца таблицы связей.
mixed first(array $columns = ['*'])
Выполнить запрос и получить первый результат.
Модель|BelongsToMany firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Коллекция get(array $columns = ['*'])
Выполнить запрос как операцию «select».
Страничный вывод с размером страницы paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Получить страничный вывод для оператора «select».
Страничный вывод simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page')
Разбить заданный запрос на страницы с использованием простого страничного вывода.
bool chunk(int $count, callable $callback)
Разбить результаты запроса на части.
protected void hydratePivotRelation(array $models)
Загрузить отношение таблицы связей для моделей.
protected array cleanPivotAttributes(Модель $model)
Получить атрибуты связующей таблицы из модели.
Билдер getRelationCountQueryForSelfJoin(Билдер $query, Билдер $parent)
Добавить ограничения для запроса подсчёта отношения при самосоединении.
string getRelationCountHash()
Получить хэш таблицы связей для отношения.
protected BelongsToMany getSelectColumns(array $columns = ['*'])
Установить оператор «select» для запроса отношения.
protected array getAliasedPivotColumns()
Получить столбцы перекрёстного столбца для отношения.
protected bool hasPivotColumn(string $column)
Определить, является ли заданный столбец столбцом перекрёстного столбца.
protected $this setJoin(Builder|null $query = null)
Установить условие объединения для запроса отношения.
protected $this setWhere()
Установить условие where для запроса отношения.
protected array buildDictionary(Collection $results)
Создать словарь модели, индексированный по внешнему ключу отношения.
Collection getRelatedIds()
Получить все идентификаторы для связанных моделей.
Модель save(Модель $model, array $joining = [], bool $touch = true)
Сохранить новую модель и прикрепить ее к родительской модели.
array saveMany(Collection|array $models, array $joinings = [])
Сохранить массив новых моделей и прикрепить их к родительской модели.
Модель|Коллекция|null find(mixed $id, array $columns = ['*'])
Найти связанную модель по ее первичному ключу.
Коллекция findMany(mixed $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам.
Модель|Коллекция findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение.
Коллекция|Модель findOrNew(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или вернуть новый экземпляр связанной модели.
Модель firstOrNew(array $attributes)
Получить первую запись связанной модели, соответствующую атрибутам, или создать ее.
Модель firstOrCreate(array $attributes, array $joining = [], bool $touch = true)
Получить первую запись связанной модели, соответствующую атрибутам, или создать ее.
Модель updateOrCreate(array $attributes, array $values = [], array $joining = [], bool $touch = true)
Создать или обновить запись связанной модели, соответствующую атрибутам, и заполнить ее значениями.
Модель create(array $attributes, array $joining = [], bool $touch = true)
Создать новый экземпляр связанной модели.
array createMany(array $records, array $joinings = [])
Создать массив новых экземпляров связанных моделей.
array sync(Collection|array $ids, bool $detaching = true)
Синхронизировать промежуточные таблицы со списком идентификаторов или коллекцией моделей.
protected array formatSyncList(array $records)
Отформатировать список синхронизации, чтобы он был индексирован по идентификатору.
protected array attachNew(array $records, array $current, bool $touch = true)
Присоединить все идентификаторы, которые отсутствуют в текущем массиве.
int updateExistingPivot(mixed $id, array $attributes, bool $touch = true)
Обновить существующую запись Pivot в таблице.
void attach(mixed $id, array $attributes = [], bool $touch = true)
Присоединить модель к родительскому элементу.
protected array createAttachRecords(array $ids, array $attributes)
Создать массив записей для вставки в таблицу Pivot.
protected array attacher(int $key, mixed $value, array $attributes, bool $timed)
Создать полный массив данных для присоединения.
protected array getAttachId(mixed $key, mixed $value, array $attributes)
Получить идентификатор записи присоединения и дополнительные атрибуты.
protected array createAttachRecord(int $id, bool $timed)
Создать новую запись присоединения Pivot.
protected array setTimestampsOnAttach(array $record, bool $exists = false)
Установить метки времени создания и обновления для записи присоединения.
int detach(int|array $ids = [], bool $touch = true)
Отсоединить модели от отношения.
void touchIfTouching()
Если мы затрагиваем родительскую модель, то затрагиваем её.
protected bool touchingParent()
Определить, нужно ли обновлять метки времени родительской модели при синхронизации.
protected string guessInverseRelation()
Попытка угадать имя обратного отношения.
protected Builder newPivotQuery()
Создать новый объект запроса для таблицы Pivot.
Builder newPivotStatement()
Получить новый простой объект запроса для таблицы Pivot.
Builder newPivotStatementForId(mixed $id)
Получить новый запрос Pivot для заданного идентификатора «другой» модели.
Pivot newPivot(array $attributes = [], bool $exists = false)
Создать новый экземпляр модели Pivot.
Pivot newExistingPivot(array $attributes = [])
Создать новый существующий экземпляр модели Pivot.
$this withPivot(array|mixed $columns)
Установить столбцы для извлечения из промежуточной таблицы.
BelongsToMany withTimestamps(mixed $createdAt = null, mixed $updatedAt = null)
Указать, что промежуточная таблица имеет метки времени создания и обновления.
string getRelatedFreshUpdate()
Получить имя столбца "updated_at" связанной модели.
string getHasCompareKey()
Получить ключ для сравнения с родительским ключом в запросе "has".
string getForeignKey()
Получить полное имя внешнего ключа для связи.
string getOtherKey()
Получить полное имя "другого ключа" для связи.
string getTable()
Получить промежуточную таблицу для связи.
string getRelationName()
Получить имя связи для связи.
string getMorphType()
Получить имя внешнего ключа "типа".
string getMorphClass()
Получить имя класса родительской модели.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/5.1/Illuminate/Database/Eloquent/Relations/MorphToMany.html