HasManyThrough
класс HasManyThrough расширяет Relation (Просмотреть исходный код)
Свойства
| InteractsWithDictionary | |
| ForwardsCalls | |
| Macroable |
Свойства
| статический защищённый массив | $macros | Зарегистрированные строковые макросы. | из Macroable |
| защищённый Builder | $query | Экземпляр Eloquent-строителя запросов. | из Relation |
| защищённый Model | $parent | Экземпляр родительской модели. | из Relation |
| защищённый Model | $related | Экземпляр связанной модели. | из Relation |
| защищённый булево значение | $eagerKeysWereEmpty | Указывает, должна ли жадно загруженная связь неявно возвращать пустой коллекцию. | из Relation |
| статический защищённый булево значение | $constraints | Указывает, добавляет ли связь ограничения. | из Relation |
| статический массив | $morphMap | Массив для сопоставления имён классов с их именами морфизма в базе данных. | из Relation |
| статический защищённый булево значение | $requireMorphMap | Предотвращает морфные отношения без карты морфизма. | из Relation |
| статический защищённый целое число | $selfJoinCount | Количество самосоединений. | из Relation |
| защищённый Model | $throughParent | Экземпляр родительской модели "через". | |
| защищённый Model | $farParent | Экземпляр дальнего родительского объекта. | |
| защищённый строка | $firstKey | Ближайший ключ в отношении. | |
| защищённый строка | $secondKey | Дальний ключ в отношении. | |
| защищённый строка | $localKey | Местный ключ в отношении. | |
| защищённый строка | $secondLocalKey | Местный ключ в промежуточной модели. |
Методы
| mixed | forwardCallTo(mixed $object, string $method, array $parameters)
Передать вызов метода заданному объекту. | from ForwardsCalls |
| mixed | forwardDecoratedCallTo(mixed $object, string $method, array $parameters)
Передать вызов метода заданному объекту, вернув $this, если переданный вызов вернул себя. | from ForwardsCalls |
| static void | throwBadMethodCallException(string $method)
Выбросить исключение плохого вызова метода для заданного метода. | from ForwardsCalls |
| static void | macro(string $name, object|callable $macro)
Зарегистрировать пользовательское макро. | from Macroable |
| static void | mixin(object $mixin, bool $replace = true)
Смешать другой объект в класс. | from Macroable |
| static bool | hasMacro(string $name)
Проверяет, зарегистрировано ли макро. | from Macroable |
| static void | flushMacros()
Очистить существующие макросы. | from Macroable |
| static mixed | __callStatic(string $method, array $parameters)
Динамически обработать вызовы класса. | from Macroable |
| mixed | __call(string $method, array $parameters)
Динамически обработать вызовы класса. | from Macroable |
| void | __construct(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Создать новый экземпляр отношения has many through. | |
| 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 |
| Model | sole(array|string $columns = ['*'])
Выполнить запрос и получить первый результат, если это единственный соответствующий запис. | from Relation |
| Collection | get(array $columns = ['*'])
Выполнить запрос как оператор «select». | |
| void | touch()
Обновить все связанные модели для отношения. | from Relation |
| int | rawUpdate(array $attributes = [])
Выполнить обычное обновление базового запроса. | from Relation |
| Builder | getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Добавить ограничения для запроса подсчета отношения. | from Relation |
| Builder | getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения. | |
| string | getRelationCountHash(bool $incrementJoinCount = true)
Получить хеш таблицы соединения отношения. | from Relation |
| array | getKeys(array $models, string|null $key = null)
Получить все первичные ключи для массива моделей. | from Relation |
| Builder | getRelationQuery()
Получить создатель запроса, который будет содержать ограничения отношения. | from Relation |
| Builder | getQuery()
Получить базовый запрос для отношения. | from Relation |
| Builder | getBaseQuery()
Получить базовый создатель запроса, управляющий создателем Eloquent запроса. | from Relation |
| Builder | toBase()
Получить экземпляр базового создателя запроса. | from Relation |
| Model | getParent()
Получить родительскую модель отношения. | from Relation |
| string | getQualifiedParentKeyName()
Получить полное имя родительского ключа. | |
| Model | getRelated()
Получить связанную модель отношения. | из Relation |
| string | createdAt()
Получить имя столбца "created at". | из Relation |
| string | updatedAt()
Получить имя столбца "updated at". | из Relation |
| string | relatedUpdatedAt()
Получить имя столбца "updated at" связанной модели. | из Relation |
| void | whereInEager(string $whereIn, string $key, array $modelKeys, Builder $query = null)
Добавить ограничение whereIn для eager загрузки по заданному набору ключей моделей. | из Relation |
| string | whereInMethod(Model $model, string $key)
Получить имя метода "where in" для eager загрузки. | из Relation |
| static void | requireMorphMap(bool $requireMorphMap = true)
Запретить использование полиморфных отношений без сопоставлений моделей. | из Relation |
| static bool | requiresMorphMap()
Определить, требуют ли полиморфные отношения явное сопоставление моделей. | из Relation |
| static array | enforceMorphMap(array $map, bool $merge = true)
Определить morph map для полиморфных отношений и потребовать явное сопоставление всех моделей. | из Relation |
| static array | morphMap(array $map = null, bool $merge = true)
Установить или получить morph map для полиморфных отношений. | из Relation |
| static array|null | buildMorphMapFromModels(array $models = null)
Создает таблично-ключевой массив из имен классов моделей. | из Relation |
| static string|null | getMorphedModel(string $alias)
Получить модель, связанную с типом пользовательского полиморфизма. | из Relation |
| void | __clone()
Принудительно клонирует базовый билдер запроса при клонировании. | из Relation |
| mixed | getDictionaryKey(mixed $attribute)
Получить атрибут ключа словаря, преобразовав его в строку, если необходимо. | из InteractsWithDictionary |
| HasOneThrough | one()
Преобразовать отношение в отношение "has one through". | |
| void | performJoin(Builder $query = null)
Установить условие объединения в запросе. | |
| bool | throughParentSoftDeletes()
Определить, использует ли родитель "через" отношения Soft Deletes. | |
| $this | withTrashedParents()
Указать, что удаленные родительские элементы "через" должны быть включены в запрос. | |
| array | buildDictionary(Collection $results)
Создать словарь модели, индексированный по внешнему ключу отношения. | |
| Model | firstOrNew(array $attributes = [], array $values = [])
Получить первую запись связанной модели, соответствующую атрибутам, или создать ее. | |
| Model | firstOrCreate(array $attributes = [], array $values = [])
Получить первую запись, соответствующую атрибутам. Если запись не найдена, создать ее. | |
| Model | createOrFirst(array $attributes = [], array $values = [])
Попытка создать запись. Если происходит нарушение уникальности, попытаться найти соответствующую запись. | |
| Model | updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить ее значениями. | |
| Model| HasManyThrough | firstWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')
Добавить базовое условие where в запрос и вернуть первый результат. | |
| mixed | first(array $columns = ['*'])
Выполнить запрос и получить первую связанную модель. | |
| Model| HasManyThrough | firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение. | |
| Model| Collection|mixed | firstOr(Closure|array $columns = ['*'], Closure $callback = null)
Выполнить запрос и получить первый результат или вызвать обратный вызов. | |
| Model| Collection|null | find(mixed $id, array $columns = ['*'])
Найти связанную модель по первичному ключу. | |
| Collection | findMany(Arrayable|array $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам. |
| Модель|Коллекция | findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение. | |
| Модель|Коллекция|mixed | findOr(mixed $id, Closure|array $columns = ['*'], Closure $callback = null)
Найти связанную модель по её первичному ключу или вызвать обратный вызов. | |
| LengthAwarePaginator | paginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int $page = null)
Получить пагинатор для оператора "select". | |
| Paginator | simplePaginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Разбить данный запрос на страницы с помощью простого пагинатора. | |
| CursorPaginator | cursorPaginate(int|null $perPage = null, array $columns = ['*'], string $cursorName = 'cursor', string|null $cursor = null)
Разбить данный запрос на страницы с помощью пагинатора с указателем. | |
| массив | shouldSelect(array $columns = ['*'])
Установить оператор select для запроса к отношению. | |
| bool | chunk(int $count, callable $callback)
Разбить результаты запроса на куски. | |
| bool | chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Разбить результаты запроса на куски, сравнивая числовые идентификаторы. | |
| bool | chunkByIdDesc(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Разбить результаты запроса на куски, сравнивая идентификаторы в порядке убывания. | |
| bool | eachById(callable $callback, int $count = 1000, string|null $column = null, string|null $alias = null)
Выполнить обратный вызов для каждого элемента, разбивая по идентификаторам. | |
| LazyCollection | cursor()
Получить генератор для данного запроса. | |
| bool | each(callable $callback, int $count = 1000)
Выполнить обратный вызов для каждого элемента, разбивая на куски. | |
| LazyCollection | lazy(int $chunkSize = 1000)
Запросить данные лениво, разбивая на куски заданного размера. | |
| LazyCollection | lazyById(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)
Запросить данные лениво, разбивая результаты запроса на куски, сравнивая идентификаторы. | |
| LazyCollection | lazyByIdDesc(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)
Запросить данные лениво, разбивая результаты запроса на куски, сравнивая идентификаторы в порядке убывания. | |
| Builder | prepareQueryBuilder(array $columns = ['*'])
Подготовить билдер запроса для выполнения. | |
| Builder | getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса к отношению на том же столе. | |
| Builder | getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса к отношению на том же столе, что и через родителя. | |
| строка | getQualifiedFarKeyName()
Получить квалифицированное внешнее ключи на связанной модели. | |
| строка | getFirstKeyName()
Получить внешний ключ на модели "через". | |
| строка | getQualifiedFirstKeyName()
Получить квалифицированное внешнее ключи на модели "через". | |
| строка | getForeignKeyName()
Получить внешний ключ на связанной модели. | |
| строка | getQualifiedForeignKeyName()
Получить квалифицированное внешнее ключи на связанной модели. | |
| строка | getLocalKeyName()
Получить локальный ключ на модели дальнего родителя. | |
| строка | getQualifiedLocalKeyName()
Получить квалифицированный локальный ключ на модели дальнего родителя. | |
| строка | getSecondLocalKeyName()
Получить локальный ключ на промежуточной модели. |
Подробности
protected mixed forwardCallTo(mixed $object, string $method, array $parameters)
Перенаправить вызов метода данному объекту.
protected mixed forwardDecoratedCallTo(mixed $object, string $method, array $parameters)
Перенаправить вызов метода данному объекту, возвращая $this, если перенаправленный вызов вернул себя.
static protected void throwBadMethodCallException(string $method)
Выбросить исключение для неправильного вызова метода для данного метода.
static void macro(string $name, object|callable $macro)
Зарегистрировать пользовательское макрос.
static void mixin(object $mixin, bool $replace = true)
Смешать другой объект в класс.
static bool hasMacro(string $name)
Проверяет, зарегистрировано ли макрос.
static void flushMacros()
Очистить существующие макросы.
static mixed __callStatic(string $method, array $parameters)
Динамически обрабатывать вызовы к классу.
mixed __call(string $method, array $parameters)
Динамически обрабатывать вызовы к классу.
void __construct(Builder $query, Model $farParent, Model $throughParent, string $firstKey, string $secondKey, string $localKey, string $secondLocalKey)
Создать новый экземпляр отношения «многие ко многим через».
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()
Получить отношение для жадной загрузки.
Model sole(array|string $columns = ['*'])
Выполнить запрос и получить первый результат, если это единственная соответствующая запись.
Collection get(array $columns = ['*'])
Выполнить запрос как оператор «select».
void touch()
Обновить все связанные модели для отношения.
int rawUpdate(array $attributes = [])
Выполнить сырое обновление для основного запроса.
Builder getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Добавить ограничения для запроса подсчёта взаимосвязей.
Builder getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса взаимосвязи.
string getRelationCountHash(bool $incrementJoinCount = true)
Получить хеш таблицы объединения взаимосвязей.
protected array getKeys(array $models, string|null $key = null)
Получить все первичные ключи для массива моделей.
protected Builder getRelationQuery()
Получить объект-билдер запроса, содержащий ограничения взаимосвязи.
Builder getQuery()
Получить базовый запрос для взаимосвязи.
Builder getBaseQuery()
Получить базовый билдер запроса, управляющий билдером Eloquent.
Builder toBase()
Получить базовый экземпляр билдера запроса.
Модель getParent()
Получить родительскую модель взаимосвязи.
string getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа.
Модель getRelated()
Получить связанную модель взаимосвязи.
string createdAt()
Получить имя столбца "created at".
string updatedAt()
Получить имя столбца "updated at".
string relatedUpdatedAt()
Получить имя столбца "updated at" связанной модели.
protected void whereInEager(string $whereIn, string $key, array $modelKeys, Builder $query = null)
Добавить ограничение whereIn для загрузки указанных наборов ключей моделей.
protected string whereInMethod(Модель $model, string $key)
Получить имя метода "where in" для загрузки.
static void requireMorphMap(bool $requireMorphMap = true)
Предотвратить использование полиморфных взаимосвязей без отображения моделей.
static bool requiresMorphMap()
Определить, требуют ли полиморфные взаимосвязи явного сопоставления моделей.
static array enforceMorphMap(array $map, bool $merge = true)
Определить карту отображения для полиморфных взаимосвязей и потребовать явного отображения всех моделей, используемых в полиморфных связях.
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()
Принудительно клонировать базовый билдер запросов при клонировании.
protected mixed getDictionaryKey(mixed $attribute)
Получить атрибут ключа словаря — приводя его к строке, если необходимо.
HasOneThrough one()
Преобразовать отношение в отношение «имеет один через».
protected void performJoin(Builder $query = null)
Установить условие объединения в запросе.
bool throughParentSoftDeletes()
Определить, использует ли «через» родитель отношения мягкие удаления.
$this withTrashedParents()
Указать, что в запросе должны быть включены удалённые «через» родители.
protected array buildDictionary(Collection $results)
Создать словарь моделей, индексированный по внешнему ключу отношения.
Model firstOrNew(array $attributes = [], array $values = [])
Получить первую запись связанной модели, соответствующей атрибутам, или создать её.
Model firstOrCreate(array $attributes = [], array $values = [])
Получить первую запись, соответствующую атрибутам. Если запись не найдена, создать её.
Model createOrFirst(array $attributes = [], array $values = [])
Попытаться создать запись. Если возникает нарушение уникального ограничения, попытаться найти соответствующую запись.
Model updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями.
Model|HasManyThrough firstWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')
Добавить базовое условие where к запросу и вернуть первый результат.
mixed first(array $columns = ['*'])
Выполнить запрос и получить первую связанную модель.
Model|HasManyThrough firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Model|HasManyThrough|mixed firstOr(Closure|array $columns = ['*'], Closure $callback = null)
Выполнить запрос и получить первый результат или вызвать обратный вызов.
Модель|Коллекция|null find(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу.
Коллекция findMany(Arrayable|array $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам.
Модель|Коллекция findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение.
Модель|Коллекция|mixed findOr(mixed $id, Closure|array $columns = ['*'], Closure $callback = null)
Найти связанную модель по её первичному ключу или вызвать обратный вызов.
LengthAwarePaginator paginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int $page = null)
Получить пагинатор для оператора «select».
Paginator simplePaginate(int|null $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Разбить заданный запрос на страницы с помощью простого пагинатора.
CursorPaginator cursorPaginate(int|null $perPage = null, array $columns = ['*'], string $cursorName = 'cursor', string|null $cursor = null)
Разбить заданный запрос на страницы с помощью пагинатора курсора.
protected array shouldSelect(array $columns = ['*'])
Установить предложение «select» для запроса отношения.
bool chunk(int $count, callable $callback)
Разбить результаты запроса на куски.
bool chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Разбить результаты запроса на куски по сравниванию числовых идентификаторов.
bool chunkByIdDesc(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Разбить результаты запроса на куски по сравниванию идентификаторов в обратном порядке.
bool eachById(callable $callback, int $count = 1000, string|null $column = null, string|null $alias = null)
Выполнить обратный вызов для каждого элемента, разбивая на куски по идентификаторам.
LazyCollection cursor()
Получить генератор для заданного запроса.
bool each(callable $callback, int $count = 1000)
Выполнить обратный вызов для каждого элемента, разбивая на куски.
LazyCollection lazy(int $chunkSize = 1000)
Выполнять запрос по частям заданного размера.
LazyCollection lazyById(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)
Выполнять запрос по частям, разбивая результаты запроса по сравниванию идентификаторов.
LazyCollection lazyByIdDesc(int $chunkSize = 1000, string|null $column = null, string|null $alias = null)
Выполнять запрос по частям, разбивая результаты запроса по сравниванию идентификаторов в порядке убывания.
protected Builder prepareQueryBuilder(array $columns = ['*'])
Подготовить билдер запроса для выполнения.
Builder getRelationExistenceQueryForSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения на том же столе.
Builder getRelationExistenceQueryForThroughSelfRelation(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения на том же столе, что и родитель через.
string getQualifiedFarKeyName()
Получить квалифицированное внешнее ключевое поле связанной модели.
string getFirstKeyName()
Получить внешнее ключевое поле модели «через».
string getQualifiedFirstKeyName()
Получить квалифицированное внешнее ключевое поле модели «через».
string getForeignKeyName()
Получить внешнее ключевое поле связанной модели.
string getQualifiedForeignKeyName()
Получить квалифицированное внешнее ключевое поле связанной модели.
string getLocalKeyName()
Получить локальное ключевое поле родительской модели «дальней».
string getQualifiedLocalKeyName()
Получить квалифицированное локальное ключевое поле родительской модели «дальней».
string getSecondLocalKeyName()
Получить локальное ключевое поле промежуточной модели.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/10.x/Illuminate/Database/Eloquent/Relations/HasManyThrough.html