BelongsToMany
class BelongsToMany extends Relation (View source)
Свойства
| InteractsWithPivotTable |
| Macroable |
Свойства
| static protected array | $macros | Зарегистрированные строковые макросы. | из Macroable |
| protected Builder | $query | Экземпляр Eloquent query builder. | из 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 | $relatedKey | Связанный ключ отношения. | |
| protected string | $relationName | Имя отношения. | |
| protected array | $pivotColumns | Столбцы промежуточной таблицы для извлечения. | |
| protected array | $pivotWheres | Любые ограничения промежуточной таблицы для условий where. | |
| protected array | $pivotWhereIns | Любые ограничения промежуточной таблицы для условий whereIn. | |
| protected string | $pivotCreatedAt | Пользовательский столбец промежуточной таблицы для отметки времени created_at. | |
| protected string | $pivotUpdatedAt | Пользовательский столбец промежуточной таблицы для отметки времени updated_at. | |
| protected string | $using | Имя класса пользовательской модели pivot для использования в отношении. | |
| static protected int | $selfJoinCount | Количество самосоединений. |
Методы
| static void | macro(string $name, callable $macro) Зарегистрировать пользовательское макрос. | from Macroable |
| static bool | hasMacro(string $name) Проверить, зарегистрировано ли макрос. | from Macroable |
| static mixed | __callStatic(string $method, array $parameters) Динамически обработать вызовы к классу. | from Macroable |
| mixed | __call(string $method, array $parameters) Динамически обработать вызовы к классу. | from Macroable |
| void | __construct(Builder $query, Model $parent, string $table, string $foreignKey, string $relatedKey, string $relationName = null) Создать новый экземпляр отношения «многие ко многим». | |
| static mixed | noConstraints(Closure $callback) Выполнить обратный вызов без ограничений для отношения. | from Relation |
| 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 | getRelationExistenceCountQuery(Builder $query, Builder $parentQuery) Добавить ограничения для запроса подсчёта существования отношения. | from Relation |
| Builder | getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*']) Добавить ограничения для запроса отношения. | |
| 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() Получить имя столбца "created at". | |
| string | updatedAt() Получить имя столбца "updated at". | |
| string | relatedUpdatedAt() Получить имя столбца "updated at" связанной модели. | from Relation |
| static array | morphMap(array $map = null, bool $merge = true) Установить или получить карту морфинга для полиморфных отношений. | from Relation |
| static array|null | buildMorphMapFromModels(array $models = null) Создаёт таблично-ключевой массив из имён классов моделей. | from Relation |
| static string|null | getMorphedModel(string $alias) Получить модель, связанную с пользовательским полиморфным типом. | from Relation |
| void | __clone() Принудительно клонировать базовый билдер запроса при клонировании. | from Relation |
| array | toggle(mixed $ids, bool $touch = true) Переключает модель (или модели) из родителя. | from InteractsWithPivotTable |
| array | syncWithoutDetaching(Collection|array $ids) Синхронизировать промежуточные таблицы со списком идентификаторов без открепления. | from InteractsWithPivotTable |
| array | sync(Collection|Collection|array $ids, bool $detaching = true) Синхронизировать промежуточные таблицы со списком идентификаторов или коллекцией моделей. | from InteractsWithPivotTable |
| array | formatRecordsList(array $records) Форматировать список записей синхронизации/переключения, чтобы он индексировался по идентификатору. | from InteractsWithPivotTable |
| array | attachNew(array $records, array $current, bool $touch = true) Прикрепить все записи, которых нет в заданных текущих записях. | from InteractsWithPivotTable |
| int | updateExistingPivot(mixed $id, array $attributes, bool $touch = true) Обновить существующую запись pivot в таблице. | from InteractsWithPivotTable |
| void | attach(mixed $id, array $attributes = [], bool $touch = true) Прикрепить модель к родительской. | from InteractsWithPivotTable |
| array | formatAttachRecords(array $ids, array $attributes) Создать массив записей для вставки в таблицу pivot. | from InteractsWithPivotTable |
| array | formatAttachRecord(int $key, mixed $value, array $attributes, bool $hasTimestamps) Создать полную полезную нагрузку записи присоединения. | from InteractsWithPivotTable |
| array | extractAttachIdAndAttributes(mixed $key, mixed $value, array $attributes) Получить идентификатор записи присоединения и дополнительные атрибуты. | from InteractsWithPivotTable |
| array | baseAttachRecord(int $id, bool $timed) Создать новую запись присоединения pivot. | from InteractsWithPivotTable |
| array | addTimestampsToAttachment(array $record, bool $exists = false) Установить метки времени создания и обновления для записи присоединения. | from InteractsWithPivotTable |
| bool | hasPivotColumn(string $column) Определить, определён ли данный столбец как столбец pivot. | from InteractsWithPivotTable |
| int | detach(mixed $ids = null, bool $touch = true) Отсоединить модели от отношения. | from InteractsWithPivotTable |
| Pivot | newPivot(array $attributes = [], bool $exists = false) Создать новый экземпляр модели pivot. | from InteractsWithPivotTable |
| Pivot | newExistingPivot(array $attributes = []) Создать новый существующий экземпляр модели pivot. | from InteractsWithPivotTable |
| Builder | newPivotStatement() Получить новый простой конструктор запросов для таблицы pivot. | from InteractsWithPivotTable |
| Builder | newPivotStatementForId(mixed $id) Получить новый оператор pivot для заданного идентификатора «другого». | from InteractsWithPivotTable |
| Builder | newPivotQuery() Создать новый конструктор запросов для таблицы pivot. | from InteractsWithPivotTable |
| $this | withPivot(array|mixed $columns) Установить столбцы в таблице pivot для извлечения. | from InteractsWithPivotTable |
| array | parseIds(mixed $value) Получить все идентификаторы из заданного смешанного значения. | from InteractsWithPivotTable |
| array | castKeys(array $keys) Преобразовать заданные ключи в целые числа, если они являются числовыми, и в строки в противном случае. | from InteractsWithPivotTable |
| mixed | castKey(mixed $key) Преобразовать заданный ключ в целое число, если он является числовым. | from InteractsWithPivotTable |
| $this | performJoin(Builder|null $query = null) Установить предложение join для запроса отношения. | |
| $this | addWhereConstraints() Установить предложение where для запроса отношения. | |
| array | buildDictionary(Collection $results) Создать словарь модели, индексированный по внешнему ключу отношения. | |
| BelongsToMany | using(string $class) Указать пользовательскую модель pivot для использования в отношении. | |
| BelongsToMany | wherePivot(string $column, string $operator = null, mixed $value = null, string $boolean = 'and') Установить предложение where для столбца таблицы pivot. |
| BelongsToMany | wherePivotIn(string $column, mixed $values, string $boolean = 'and', bool $not = false) Установить условие «в» для столбца таблицы связи. | |
| BelongsToMany | orWherePivot(string $column, string $operator = null, mixed $value = null) Установить условие «или где» для столбца таблицы связи. | |
| BelongsToMany | orWherePivotIn(string $column, mixed $values) Установить условие «или где в» для столбца таблицы связи. | |
| 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|Collection|null | find(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу. | |
| Collection | findMany(mixed $ids, array $columns = ['*']) Найти несколько связанных моделей по их первичным ключам. | |
| Model|Collection | findOrFail(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу или выбросить исключение. | |
| mixed | first(array $columns = ['*']) Выполнить запрос и получить первый результат. | |
| Model|BelongsToMany | firstOrFail(array $columns = ['*']) Выполнить запрос и получить первый результат или выбросить исключение. | |
| Collection | get(array $columns = ['*']) Выполнить запрос как «select» оператор. | |
| BelongsToMany | shouldSelect(array $columns = ['*']) Получить столбцы для выбора в запросе связи. | |
| array | aliasedPivotColumns() Получить столбцы связи для отношения. | |
| 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', int|null $page = null) Разбить данный запрос на страницы с помощью простого пагинатора. | |
| bool | chunk(int $count, callable $callback) Разбить результаты запроса на части. | |
| void | hydratePivotRelation(array $models) Обработать отношение таблицы связи для моделей. | |
| array | migratePivotAttributes(Model $model) Получить атрибуты связи из модели. | |
| void | touchIfTouching() Если необходимо обновить дату изменения родительской модели, сделать это. | |
| bool | touchingParent() Определить, нужно ли обновлять дату изменения родительской модели при синхронизации. | |
| string | guessInverseRelation() Попытка определить имя обратного отношения. | |
| Collection | allRelatedIds() Получить все идентификаторы связанных моделей. | |
| Model | save(Model $model, array $pivotAttributes = [], bool $touch = true) Сохранить новую модель и прикрепить её к родительской модели. | |
| array | saveMany(Collection|array $models, array $pivotAttributes = []) Сохранить массив новых моделей и прикрепить их к родительской модели. | |
| Model | create(array $attributes, array $joining = [], bool $touch = true) Создать новый экземпляр связанной модели. | |
| array | createMany(array $records, array $joinings = []) Создать массив новых экземпляров связанных моделей. | |
| Builder | getRelationExistenceQueryForSelfJoin(Builder $query, Builder $parentQuery, array|mixed $columns = ['*']) Добавить ограничения для запроса отношения на той же таблице. | |
| string | getExistenceCompareKey() Получить ключ для сравнения с ключом родительской модели в запросе «has». | |
| string | getRelationCountHash() Получить хэш таблицы связи для подсчёта. | |
| BelongsToMany | withTimestamps(mixed $createdAt = null, mixed $updatedAt = null) Указать, что таблица связи имеет метки времени создания и изменения. | |
| string | getQualifiedForeignKeyName() Получить полностью квалифицированное имя внешнего ключа для отношения. | |
| string | getQualifiedRelatedKeyName() Получить полностью квалифицированное имя «ключа связанной сущности» для отношения. | |
| string | getTable() Получить промежуточную таблицу для отношения. |
| string | getRelationName() Получить имя отношения для связи. |
Подробности
static void macro(string $name, callable $macro)
Зарегистрировать пользовательский макрос.
static bool hasMacro(string $name)
Проверяет, зарегистрирован ли макрос.
static mixed __callStatic(string $method, array $parameters)
Динамически обрабатывать вызовы к классу.
mixed __call(string $method, array $parameters)
Динамически обрабатывать вызовы к классу.
void __construct(Builder $query, Model $parent, string $table, string $foreignKey, string $relatedKey, string $relationName = null)
Создать новый экземпляр связи belongs to many.
static mixed noConstraints(Closure $callback)
Выполнить обратный вызов без ограничений для связи.
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 getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Добавить ограничения для запроса подсчета существования связи.
Builder getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса связи.
protected array getKeys(array $models, string $key = null)
Получить все первичные ключи для массива моделей.
Builder getQuery()
Получить базовый запрос для связи.
Построитель getBaseQuery()
Получить базовый построитель запроса, управляющий построителем Eloquent.
Модель getParent()
Получить родительскую модель отношения.
string getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа.
Модель getRelated()
Получить связанную модель отношения.
string createdAt()
Получить имя столбца «создано в».
string updatedAt()
Получить имя столбца «обновлено в».
string relatedUpdatedAt()
Получить имя столбца «обновлено в» связанной модели.
static array morphMap(array $map = null, bool $merge = true)
Установить или получить отображение morph для полиморфных отношений.
static protected array|null buildMorphMapFromModels(array $models = null)
Создает таблично-индексированный массив из имен классов моделей.
static string|null getMorphedModel(string $alias)
Получить модель, связанную с пользовательским полиморфным типом.
void __clone()
Принудительно клонировать базовый построитель запроса при клонировании.
array toggle(mixed $ids, bool $touch = true)
Переключает модель (или модели) из родителя.
Каждая существующая модель открепляется, а несуществующие — прикрепляются.
array syncWithoutDetaching(Коллекция|array $ids)
Синхронизировать промежуточные таблицы со списком идентификаторов без открепления.
array sync(Коллекция|Коллекция|array $ids, bool $detaching = true)
Синхронизировать промежуточные таблицы со списком идентификаторов или коллекцией моделей.
protected array formatRecordsList(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 formatAttachRecords(array $ids, array $attributes)
Создать массив записей для вставки в таблицу pivot.
protected array formatAttachRecord(int $key, mixed $value, array $attributes, bool $hasTimestamps)
Создать полную нагрузку записи прикрепления.
protected array extractAttachIdAndAttributes(mixed $key, mixed $value, array $attributes)
Получить идентификатор записи прикрепления и дополнительные атрибуты.
protected array baseAttachRecord(int $id, bool $timed)
Создать новую запись привязки.
protected array addTimestampsToAttachment(array $record, bool $exists = false)
Установить метки времени создания и обновления для записи привязки.
protected bool hasPivotColumn(string $column)
Определить, является ли заданный столбец столбцом привязки.
int detach(mixed $ids = null, bool $touch = true)
Отсоединить модели от связи.
Pivot newPivot(array $attributes = [], bool $exists = false)
Создать новый экземпляр модели привязки.
Pivot newExistingPivot(array $attributes = [])
Создать новый существующий экземпляр модели привязки.
Builder newPivotStatement()
Получить новый простой конструктор запросов для таблицы привязки.
Builder newPivotStatementForId(mixed $id)
Получить новое выражение привязки для данного идентификатора «другой» модели.
protected Builder newPivotQuery()
Создать новый конструктор запросов для таблицы привязки.
$this withPivot(array|mixed $columns)
Установить столбцы в таблице привязки для извлечения.
protected array parseIds(mixed $value)
Получить все идентификаторы из заданного смешанного значения.
protected array castKeys(array $keys)
Преобразовать заданные ключи в целые числа, если они являются числовыми, и в строку в противном случае.
protected mixed castKey(mixed $key)
Преобразовать заданный ключ в целое число, если он является числовым.
protected $this performJoin(Builder|null $query = null)
Установить условие соединения для запроса связи.
protected $this addWhereConstraints()
Установить условие where для запроса связи.
protected array buildDictionary(Collection $results)
Создать словарь моделей, индексированный по внешнему ключу связи.
BelongsToMany using(string $class)
Указать пользовательскую модель привязки для использования в связи.
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)
Установите условие "или где" для столбца таблицы сводки.
BelongsToMany orWherePivotIn(string $column, mixed $values)
Установите условие "или где в" для столбца таблицы сводки.
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|Collection|null find(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу.
Collection findMany(mixed $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам.
Model|Collection findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение.
mixed first(array $columns = ['*'])
Выполнить запрос и получить первый результат.
Model|BelongsToMany firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Collection get(array $columns = ['*'])
Выполнить запрос как операцию "выбрать".
protected BelongsToMany shouldSelect(array $columns = ['*'])
Получить столбцы для выбора в запросе отношения.
protected array aliasedPivotColumns()
Получить столбцы сводки для отношения.
"pivot_" добавляется как префикс к каждому столбцу для удобного удаления позже.
LengthAwarePaginator paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Получить пагинатор для оператора "выбрать".
Paginator simplePaginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Разбить заданный запрос на простую страницу.
bool chunk(int $count, callable $callback)
Разбить результаты запроса на блоки.
protected void hydratePivotRelation(array $models)
Заполнить связанные отношения сводной таблицы для моделей.
protected array migratePivotAttributes(Model $model)
Получить атрибуты сводной таблицы из модели.
void touchIfTouching()
Если нужно обновить родительскую модель, то обновить.
protected bool touchingParent()
Определить, нужно ли обновлять родительскую модель при синхронизации.
protected string guessInverseRelation()
Попытка угадать имя обратного отношения.
Collection allRelatedIds()
Получить все ID связанных моделей.
Model save(Model $model, array $pivotAttributes = [], bool $touch = true)
Сохранить новую модель и прикрепить её к родительской модели.
array saveMany(Collection|array $models, array $pivotAttributes = [])
Сохранить массив новых моделей и прикрепить их к родительской модели.
Model create(array $attributes, array $joining = [], bool $touch = true)
Создать новую модель связанного типа.
array createMany(array $records, array $joinings = [])
Создать массив новых моделей связанного типа.
Builder getRelationExistenceQueryForSelfJoin(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения на том же столе.
string getExistenceCompareKey()
Получить ключ для сравнения с ключом родительской модели в запросе «имеет».
string getRelationCountHash()
Получить хэш таблицы соединения для отношения.
BelongsToMany withTimestamps(mixed $createdAt = null, mixed $updatedAt = null)
Указать, что таблица связи имеет метки создания и обновления.
string getQualifiedForeignKeyName()
Получить полностью квалифицированное имя внешнего ключа для отношения.
string getQualifiedRelatedKeyName()
Получить полностью квалифицированный «ключ связанной сущности» для отношения.
string getTable()
Получить промежуточную таблицу для отношения.
string getRelationName()
Получить имя отношения для отношения.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Relations/BelongsToMany.html