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». | |
| LengthAwarePaginator | paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Получить разбиение по страницам для оператора «select». | |
| Paginator | simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page') Разбить результат запроса на страницы с помощью простого разбиения по страницам. | |
| bool | chunk(int $count, callable $callback) Разбить результаты запроса на части. | |
| void | hydratePivotRelation(array $models) Заполнить отношение к таблице связей в моделях. | |
| array | cleanPivotAttributes(Модель $model) Получить атрибуты связи из модели. | |
| Builder | getRelationQueryForSelfJoin(Builder $query, Builder $parent, array|mixed $columns = ['*']) Добавить ограничения для запроса отношения к одной и той же таблице. | |
| string | getRelationCountHash() Получить хеш таблицы соединения отношения. | |
| BelongsToMany | getSelectColumns(array $columns = ['*']) Установить оператор select для запроса отношения. | |
| array | getAliasedPivotColumns() Получить столбцы связи для отношения. | |
| bool | hasPivotColumn(string $column) Определить, является ли заданный столбец столбцом связи. | |
| $this | setJoin(Builder|null $query = null) Установить условие соединения для запроса отношения. | |
| $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 | syncWithoutDetaching(Коллекция|array $ids) Синхронизировать промежуточные таблицы со списком идентификаторов без отсоединения. | |
| array | sync(Коллекция|array $ids, bool $detaching = true) Синхронизировать промежуточные таблицы со списком идентификаторов или коллекцией моделей. | |
| array | formatSyncList(array $records) Отформатировать список синхронизации так, чтобы он был индексирован по идентификатору. | |
| array | attachNew(array $records, array $current, bool $touch = true) Прикрепить все идентификаторы, которые отсутствуют в текущем массиве. | |
| 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) Получить идентификатор записи прикрепления и дополнительные атрибуты. | |
| 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) Получить новый запрос для промежуточной таблицы по заданному идентификатору. | |
| 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)
Создать новый экземпляр связи "многие ко многим".
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 = [])
Выполнить обновление с помощью SQL запроса для базового запроса.
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 = ['*'])
Выполнить запрос и получить первый результат.
Модель|Связь многие ко многим firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Коллекция get(array $columns = ['*'])
Выполнить запрос в качестве оператора «выбрать».
Страничный результат с информацией о количестве элементов paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Получить страницу для оператора «выбрать».
Страничный результат simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page')
Разбить данный запрос на страницы с простым страничным результатом.
логический тип chunk(int $count, callable $callback)
Разбить результаты запроса на куски.
защищённый пустое значение hydratePivotRelation(array $models)
Заполнить отношение pivot таблицы в моделях.
защищённый массив cleanPivotAttributes(Модель $model)
Получить атрибуты pivot из модели.
Библиотекарь getRelationQueryForSelfJoin(Библиотекарь $query, Библиотекарь $parent, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношений на той же таблице.
строка getRelationCountHash()
Получить хеш таблицы соединения отношения.
защищённый Связь многие ко многим getSelectColumns(array $columns = ['*'])
Установить предложение select для запроса отношения.
защищённый массив getAliasedPivotColumns()
Получить столбцы pivot для отношения.
защищённый логический тип hasPivotColumn(string $column)
Определить, определён ли данный столбец как столбец pivot.
защищённый $this setJoin(Библиотекарь|null $query = null)
Установить предложение join для запроса отношения.
защищённый $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 syncWithoutDetaching(Коллекция|array $ids)
Синхронизировать промежуточные таблицы со списком ID без отсоединения.
array sync(Коллекция|array $ids, bool $detaching = true)
Синхронизировать промежуточные таблицы со списком ID или коллекцией моделей.
protected array formatSyncList(array $records)
Форматировать список синхронизации, чтобы он был индексирован по ID.
protected 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)
Прикрепить модель к родительской.
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)
Получить ID записи прикрепления и дополнительные атрибуты.
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)
Получить новый запрос для связи по заданному 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.2/Illuminate/Database/Eloquent/Relations/BelongsToMany.html