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 | Любые ограничения для промежуточной таблицы в операторах where. | |
| protected array | $pivotWhereIns | Любые ограничения для промежуточной таблицы в операторах whereIn. | |
| protected string | $pivotCreatedAt | Пользовательский столбец промежуточной таблицы для отметки времени created_at. | |
| protected string | $pivotUpdatedAt | Пользовательский столбец промежуточной таблицы для отметки времени updated_at. | |
| static protected int | $selfJoinCount | Количество самосоединений. |
Методы
| 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() Получить отношение для жадной загрузки. | из Relation |
| void | touch() Обновить метки времени для всех связанных моделей отношения. | |
| int | rawUpdate(array $attributes = []) Выполнить сырое обновление для базового запроса. | из Relation |
| Builder | getRelationCountQuery(Builder $query, Builder $parent) Добавить ограничения для запроса подсчёта отношения. | из Relation |
| Builder | getRelationQuery(Builder $query, Builder $parent, array|mixed $columns = ['*']) Добавить ограничения для запроса отношения. | |
| 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". | |
| string | updatedAt() Получить имя столбца "updated at". | |
| string | relatedUpdatedAt() Получить имя столбца "updated at" связанной модели. | из Relation |
| string | wrap(string $value) Оборачивает значение с помощью синтаксиса грамматики родительского запроса. | из Relation |
| static array | morphMap(array $map = null, bool $merge = true) Установить или получить мапу морфизма для полиморфных отношений. | из 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 | wherePivotIn(string $column, mixed $values, string $boolean = 'and', bool $not = false) Установить условие "where in" для столбца таблицы связей. | |
| BelongsToMany | orWherePivot(string $column, string $operator = null, mixed $value = null) Установить условие "or where" для столбца таблицы связей. | |
| BelongsToMany | orWherePivotIn(string $column, mixed $values) Установить условие "or where in" для столбца таблицы связей. | |
| mixed | first(array $columns = ['*']) Выполнить запрос и получить первый результат. | |
| Model|BelongsToMany | firstOrFail(array $columns = ['*']) Выполнить запрос и получить первый результат, иначе выбросить исключение. |
| Коллекция | get(array $columns = ['*']) Выполнить запрос как операцию «select». | |
| Paginator с размером страницы | paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Получить пагинатор для запроса «select». | |
| Paginator | simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Преобразовать заданный запрос в простой пагинатор. | |
| bool | chunk(int $count, callable $callback) Разбить результаты запроса на куски. | |
| void | hydratePivotRelation(array $models) Заполнить отношение посредством таблицы связей для моделей. | |
| array | cleanPivotAttributes(Модель $model) Получить атрибуты посредника из модели. | |
| Билдер | getRelationQueryForSelfJoin(Билдер $query, Билдер $parent, array|mixed $columns = ['*']) Добавить ограничения к запросу отношения для самосоединения. | |
| string | getRelationCountHash() Получить хэш таблицы связей отношения. | |
| Связь many-to-many | getSelectColumns(array $columns = ['*']) Установить предложение select для запроса отношения. | |
| array | getAliasedPivotColumns() Получить столбцы посредника для отношения. | |
| bool | hasPivotColumn(string $column) Определить, является ли данный столбец столбцом посредника. | |
| $this | setJoin(Билдер|null $query = null) Установить предложение join для запроса отношения. | |
| $this | setWhere() Установить предложение where для запроса отношения. | |
| array | buildDictionary(Коллекция $results) Создать словарь модели, индексированный по внешнему ключу отношения. | |
| Коллекция | getRelatedIds() Получить все идентификаторы связанных моделей. | |
| Модель | save(Модель $model, array $joining = [], bool $touch = true) Сохранить новую модель и прикрепить её к родительской модели. | |
| array | saveMany(Коллекция|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 | toggle(mixed $ids, bool $touch = true) Переключает модель (или модели) от родительской. | |
| array | syncWithoutDetaching(Коллекция|array $ids) Синхронизировать таблицы связей со списком идентификаторов без открепления. | |
| array | sync(Коллекция|Коллекция|array $ids, bool $detaching = true) Синхронизировать таблицы связей со списком идентификаторов или коллекцией моделей. | |
| array | formatRecordsList(array $records) Отформатировать список записей для синхронизации/переключения, индексированный по идентификатору. | |
| array | attachNew(array $records, array $current, bool $touch = true) Прикрепить все идентификаторы, которые отсутствуют в текущем массиве. | |
| array | castKeys(array $keys) Преобразовать заданные ключи в целые числа, если они числовые, и в строки в противном случае. | |
| 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(mixed $ids = [], bool $touch = true) Отсоединить модели от связи. | |
| void | touchIfTouching() Если необходимо обновлять метку времени родительской модели, сделать это. | |
| bool | touchingParent() Определить, нужно ли обновлять метку времени родительской модели при синхронизации. | |
| string | guessInverseRelation() Попытка угадать имя обратной связи. | |
| Builder | newPivotQuery() Создать новый запрос для таблицы связи. | |
| 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() Получить имя связи для связи. |
Подробности
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()
Получить связь для ленивой загрузки.
void touch()
Обновить метку времени всех связанных моделей для связи.
Например: Обновить метки времени всех ролей, связанных с этим пользователем.
int rawUpdate(array $attributes = [])
Выполнить непосредственное обновление базы данных.
Builder getRelationCountQuery(Builder $query, Builder $parent)
Добавить ограничения для запроса подсчёта количества элементов в связи.
Builder getRelationQuery(Builder $query, Builder $parent, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения.
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)
Установить или получить карту morph для полиморфных отношений.
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 wherePivotIn(string $column, mixed $values, string $boolean = 'and', bool $not = false)
Установить условие «where in» для столбца таблицы связей.
BelongsToMany orWherePivot(string $column, string $operator = null, mixed $value = null)
Установить условие «or where» для столбца таблицы связей.
BelongsToMany orWherePivotIn(string $column, mixed $values)
Установить условие «or where in» для столбца таблицы связей.
смешанный first(array $columns = ['*'])
Выполните запрос и получите первый результат.
Модель|СвязьMany-to-Many 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', int|null $page = null)
Разбить данные запроса на страницы с помощью простого страничного отображателя.
булево chunk(int $count, callable $callback)
Разбить результаты запроса на куски.
защищённый пустое hydratePivotRelation(array $models)
Заполнить отношение к вспомогательной таблице для моделей.
защищённый массив cleanPivotAttributes(Модель $model)
Получить атрибуты вспомогательной таблицы от модели.
Построитель getRelationQueryForSelfJoin(Построитель $query, Построитель $parent, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения к тому же столу.
строка getRelationCountHash()
Получить хэш вспомогательной таблицы для подсчёта.
защищённый СвязьMany-to-Many getSelectColumns(array $columns = ['*'])
Установить оператор выбора для запроса отношения.
защищённый массив getAliasedPivotColumns()
Получить колонки вспомогательной таблицы для отношения.
защищённый булево hasPivotColumn(string $column)
Определить, определена ли заданная колонка как колонка вспомогательной таблицы.
защищённый $this setJoin(Построитель|null $query = null)
Установить оператор соединения для запроса отношения.
защищённый $this setWhere()
Установить оператор where для запроса отношения.
защищённый массив buildDictionary(Коллекция $results)
Собрать словарь моделей, ключами которого являются внешние ключи отношения.
Коллекция getRelatedIds()
Получить все идентификаторы связанных моделей.
Модель save(Модель $model, array $joining = [], bool $touch = true)
Сохранить новую модель и прикрепить её к родительской модели.
array saveMany(Коллекция|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 toggle(mixed $ids, bool $touch = true)
Включает/выключает модель (или модели) из родительской.
Каждая существующая модель отсоединяется, а несуществующие — присоединяются.
array syncWithoutDetaching(Коллекция|array $ids)
Синхронизирует промежуточные таблицы со списком идентификаторов без отсоединения.
array sync(Коллекция|Коллекция|array $ids, bool $detaching = true)
Синхронизирует промежуточные таблицы со списком идентификаторов или коллекцией моделей.
protected array formatRecordsList(array $records)
Форматирует список записей для синхронизации/переключения таким образом, что он индексируется по ID.
protected array attachNew(array $records, array $current, bool $touch = true)
Присоединить все идентификаторы, которых нет в текущем массиве.
protected array castKeys(array $keys)
Преобразовать заданные ключи в целые числа, если они числовые, и в строки в противном случае.
int updateExistingPivot(mixed $id, array $attributes, bool $touch = true)
Обновить существующую запись моста в таблице.
void attach(mixed $id, array $attributes = [], bool $touch = true)
Прикрепить модель к родителю.
protected array createAttachRecords(array $ids, array $attributes)
Создать массив записей для вставки в таблицу моста.
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)
Создать новую запись присоединения моста.
protected array setTimestampsOnAttach(array $record, bool $exists = false)
Установить метки создания и обновления для записи присоединения.
int detach(mixed $ids = [], bool $touch = true)
Отсоединить модели от отношения.
void touchIfTouching()
Если мы касаемся родительской модели, касаемся.
protected bool touchingParent()
Определить, нужно ли касаться родителя при синхронизации.
protected string guessInverseRelation()
Попытка угадать имя обратного отношения.
protected Builder newPivotQuery()
Создать новый объект запроса для таблицы моста.
Builder newPivotStatement()
Получить новый простой объект запроса для таблицы моста.
Builder newPivotStatementForId(mixed $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.3/Illuminate/Database/Eloquent/Relations/BelongsToMany.html