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