BelongsToMany
class BelongsToMany extends Relation (View source)
Свойства
| InteractsWithPivotTable |
| Macroable |
Свойства
| static protected array | $macros | Зарегистрированные макросы строк. | from Macroable |
| protected Builder | $query | Экземпляр Eloquent-строителя запросов. | from Relation |
| protected Model | $parent | Экземпляр родительской модели. | from Relation |
| protected Model | $related | Экземпляр связанной модели. | from Relation |
| static protected bool | $constraints | Указывает, добавляет ли отношение ограничения. | from Relation |
| static protected array | $morphMap | Массив для сопоставления имен классов с их именами морфинг в базе данных. | from Relation |
| protected string | $table | Промежуточная таблица для отношения. | |
| protected string | $foreignPivotKey | Внешний ключ родительской модели. | |
| protected string | $relatedPivotKey | Связанный ключ отношения. | |
| protected string | $parentKey | Имя ключа родительской модели. | |
| 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 | Имя класса настраиваемой модели сводной таблицы для использования в связи. | |
| protected string | $accessor | Имя аксессора для использования в связи "pivot". | |
| static protected int | $selfJoinCount | Количество самосоединений. |
Методы
| static void | macro(string $name, object|callable $macro) Зарегистрировать пользовательское макрос. | from Macroable |
| static void | mixin(object $mixin) Смешать другой объект в класс. | 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 $foreignPivotKey, string $relatedPivotKey, string $parentKey, string $relatedKey, string $relationName = null) Создать новый экземпляр связи belongs to many. | |
| 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() Получить отношение для ленивой загрузки. | из Relation |
| Collection | get(array $columns = ['*']) Выполнить запрос как операцию «выбор». | |
| void | touch() Обновить метку времени для всех связанных моделей в отношении. | |
| int | rawUpdate(array $attributes = []) Выполнить прямое обновление по базовому запросу. | из 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 |
| строка | getQualifiedParentKeyName() Получить полное квалифицированное имя родительского ключа для отношения. | |
| Модель | getRelated() Получить связанную модель отношения. | из Отношение |
| строка | createdAt() Получить имя столбца "создано в". | |
| строка | updatedAt() Получить имя столбца "обновлено в". | |
| строка | relatedUpdatedAt() Получить имя столбца "обновлено в" связанной модели. | из Отношение |
| статический массив | morphMap(массив $map = null, bool $merge = true) Установить или получить карту morph для полиморфных отношений. | из Отношение |
| статический массив|null | buildMorphMapFromModels(массив $models = null) Создаёт таблично-ключевой массив из имён классов моделей. | из Отношение |
| статическая строка|null | getMorphedModel(строка $alias) Получить модель, связанную с пользовательским полиморфным типом. | из Отношение |
| 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) Обновить существующую запись связи на таблице. | from InteractsWithPivotTable |
| void | attach(mixed $id, array $attributes = [], bool $touch = true) Привязать модель к родительской. | from InteractsWithPivotTable |
| array | formatAttachRecords(array $ids, array $attributes) Создать массив записей для вставки в таблицу связей. | from InteractsWithPivotTable |
| array | formatAttachRecord(int $key, mixed $value, array $attributes, bool $hasTimestamps) Создать полную запись привязки. | from InteractsWithPivotTable |
| array | extractAttachIdAndAttributes(mixed $key, mixed $value, array $attributes) Получить ID записи привязки и дополнительные атрибуты. | from InteractsWithPivotTable |
| array | baseAttachRecord(int $id, bool $timed) Создать новую запись связи. | from InteractsWithPivotTable |
| массив | addTimestampsToAttachment(массив $record, bool $exists = false) Установить метки времени создания и обновления для записи привязки. | из InteractsWithPivotTable |
| bool | hasPivotColumn(строка $column) Определить, является ли указанный столбец столбцом привязки. | из InteractsWithPivotTable |
| целое | detach(смешанное $ids = null, bool $touch = true) Отсоединить модели от связи. | из InteractsWithPivotTable |
| Pivot | newPivot(массив $attributes = [], bool $exists = false) Создать новый экземпляр модели привязки. | из InteractsWithPivotTable |
| Pivot | newExistingPivot(массив $attributes = []) Создать новый существующий экземпляр модели привязки. | из InteractsWithPivotTable |
| Builder | newPivotStatement() Получить новый простой билдер запроса для таблицы привязки. | из InteractsWithPivotTable |
| Builder | newPivotStatementForId(mixed $id) Получить новое утверждение связующей таблицы для заданного ID «другого» элемента. | from InteractsWithPivotTable |
| Builder | newPivotQuery() Создать новый объект запроса для связующей таблицы. | from InteractsWithPivotTable |
| $this | withPivot(array|mixed $columns) Установить столбцы связующей таблицы для извлечения. | from InteractsWithPivotTable |
| array | parseIds(mixed $value) Получить все ID из заданного смешанного значения. | from InteractsWithPivotTable |
| array | castKeys(array $keys) Преобразовать заданные ключи в целые числа, если они числовые, и в строки в противном случае. | from InteractsWithPivotTable |
| mixed | castKey(mixed $key) Преобразовать заданный ключ в целое число, если он числовой. | from InteractsWithPivotTable |
| массив | castAttributes(массив $attributes) Преобразовать предоставленные атрибуты связи. | из InteractsWithPivotTable |
| $this | performJoin(Builder|null $query = null) Установить условие объединения для запроса отношения. | |
| $this | addWhereConstraints() Установить условие WHERE для запроса отношения. | |
| массив | buildDictionary(Collection $results) Создать словарь моделей, индексированный по внешнему ключу отношения. | |
| BelongsToMany | using(строка $class) Указать пользовательскую модель связи для отношения. | |
| BelongsToMany | as(строка $accessor) Указать пользовательский аксессор для отношения. | |
| BelongsToMany | wherePivot(строка $column, строка $operator = null, смешанный $value = null, строка $boolean = 'and') Установить условие WHERE для столбца таблицы связи. | |
| BelongsToMany | wherePivotIn(строка $column, смешанный $values, строка $boolean = 'and', логический $not = false) Установить условие «where in» для столбца таблицы связи. |
| BelongsToMany | orWherePivot(string $column, string $operator = null, mixed $value = null) Установить условие "или где" для столбца таблицы связей. | |
| BelongsToMany | orWherePivotIn(string $column, mixed $values) Установить условие "или где в" для столбца таблицы связей. | |
| Collection|Модель | 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) Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями. | |
| Модель|Коллекция|null | find(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу. |
| Коллекция | findMany(mixed $ids, array $columns = ['*']) Найти несколько связанных моделей по их первичным ключам. | |
| Модель|Коллекция | findOrFail(mixed $id, array $columns = ['*']) Найти связанную модель по её первичному ключу или выбросить исключение. | |
| mixed | first(array $columns = ['*']) Выполнить запрос и получить первый результат. | |
| Модель|Связь многие ко многим | firstOrFail(array $columns = ['*']) Выполнить запрос и получить первый результат или выбросить исключение. | |
| Связь многие ко многим | shouldSelect(array $columns = ['*']) Получить столбцы для выбора в запросе связи. | |
| массив | aliasedPivotColumns() Получить столбцы сводной таблицы для связи. | |
| 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 | migratePivotAttributes(Модель $model) Получить атрибуты промежуточной таблицы из модели. | |
| void | touchIfTouching() Если нужно обновить родительскую модель, то обновить. | |
| bool | touchingParent() Определить, нужно ли обновлять родительскую модель при синхронизации. | |
| string | guessInverseRelation() Попытка определить имя обратной связи. | |
| Коллекция | allRelatedIds() Получить все идентификаторы связанных моделей. | |
| Модель | save(Модель $model, array $pivotAttributes = [], bool $touch = true) Сохранить новую модель и прикрепить её к родительской модели. | |
| array | saveMany(Коллекция|array $models, array $pivotAttributes = []) Сохранить массив новых моделей и прикрепить их к родительской модели. | |
| Модель | 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 | getQualifiedForeignPivotKeyName() Получить полное квалифицированное имя внешнего ключа для связи. | |
| string | getQualifiedRelatedPivotKeyName() Получить полное квалифицированное имя "связанного ключа" для связи. | |
| string | getTable() Получить промежуточную таблицу для связи. | |
| string | getRelationName() Получить имя связи для связи. |
Подробности
static void macro(string $name, object|callable $macro)
Зарегистрировать пользовательскую макрос.
static void mixin(object $mixin)
Смешать другой объект в класс.
static bool hasMacro(string $name)
Проверка, зарегистрирована ли макрос.
static mixed __callStatic(string $method, array $parameters)
Динамически обработать вызовы класса.
смешанный __call(строка $method, массив $parameters)
Динамически обрабатывает вызовы класса.
пустое значение __construct(Builder $query, Model $parent, строка $table, строка $foreignPivotKey, строка $relatedPivotKey, строка $parentKey, строка $relatedKey, строка $relationName = null)
Создает новый экземпляр отношения принадлежности ко многим.
статический смешанный 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()
Получить отношение для ленивой загрузки.
Collection get(array $columns = ['*'])
Выполнить запрос как операцию «выбор».
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()
Получить базовое запрошенное выражение для связи.
Builder getBaseQuery()
Получить базовый конструктор запроса, управляющий конструктором Eloquent.
Модель getParent()
Получить родительскую модель связи.
string getQualifiedParentKeyName()
Получить полное имя родительского ключа для связи.
Модель getRelated()
Получить связанную модель связи.
string createdAt()
Получить имя столбца "created at".
string updatedAt()
Получить имя столбца "updated at".
string relatedUpdatedAt()
Получить имя столбца "updated at" связанной модели.
static array morphMap(array $map = null, bool $merge = true)
Установить или получить карту морфирования для полиморфных связей.
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(Collection|array $ids)
Синхронизирует промежуточные таблицы со списком идентификаторов без отсоединения.
array sync(Collection|Collection|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)
Обновить существующую запись сводной таблицы.
void attach(mixed $id, array $attributes = [], bool $touch = true)
Присоединить модель к родительской.
protected array formatAttachRecords(array $ids, array $attributes)
Создать массив записей для вставки в сводную таблицу.
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)
Получить новое выражение для связующей таблицы по заданному ID.
protected Builder newPivotQuery()
Создать новый запрос для связующей таблицы.
$this withPivot(array|mixed $columns)
Указать столбцы для извлечения из связующей таблицы.
protected array parseIds(mixed $value)
Получить все ID из заданного значения.
protected array castKeys(array $keys)
Преобразовать ключи к целочисленному типу, если они числовые, в противном случае к строковому.
protected mixed castKey(mixed $key)
Преобразовать заданный ключ к целому числу, если он является числовым.
protected array castAttributes(array $attributes)
Преобразовать заданные атрибуты связи.
protected $this performJoin(Builder|null $query = null)
Установить условие объединения для запроса связи.
protected $this addWhereConstraints()
Установить условие where для запроса связи.
protected array buildDictionary(Collection $results)
Создать словарь моделей, индексированный по внешнему ключу связи.
BelongsToMany using(string $class)
Укажите пользовательскую модель оси для отношения.
BelongsToMany as(string $accessor)
Укажите пользовательский аксессор оси для отношения.
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" для столбца таблицы связей.
Collection|Модель 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)
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями.
Модель|Коллекция|null find(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу.
Коллекция findMany(mixed $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам.
Модель|Коллекция findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение.
mixed first(array $columns = ['*'])
Выполнить запрос и получить первый результат.
Модель|BelongsToMany firstOrFail(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)
Получить разбиение на страницы для оператора "select".
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()
Получить все идентификаторы связанных моделей.
Model save(Model $model, array $pivotAttributes = [], bool $touch = true)
Сохранить новую модель и прикрепить ее к родительской модели.
array saveMany(Collection|array $models, array $pivotAttributes = [])
Сохранить массив новых моделей и прикрепить их к родительской модели.
Модель 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 getQualifiedForeignPivotKeyName()
Получить полное имя внешнего ключа для отношения.
string getQualifiedRelatedPivotKeyName()
Получить полное имя «связанного ключа» для отношения.
string getTable()
Получить промежуточную таблицу для отношения.
string getRelationName()
Получить имя отношения для отношения.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Relations/BelongsToMany.html