HasManyThrough
класс HasManyThrough расширяет Relation (Просмотреть исходный код)
Трейты
| InteractsWithDictionary | |
| ForwardsCalls | |
| Macroable |
Свойства
| статический защищенный массив | $macros | Зарегистрированные строковые макросы. | из Macroable |
| защищенный Builder | $query | Экземпляр Eloquent-билдера запросов. | из Relation |
| защищенный Model | $parent | Экземпляр родительской модели. | из Relation |
| защищенный Model | $related | Экземпляр связанной модели. | из Relation |
| статический защищенный bool | $constraints | Указывает, добавляет ли отношение ограничения. | из Relation |
| статический массив | $morphMap | Массив для сопоставления имен классов с их именами морфинг в базе данных. | из Relation |
| статический защищенный bool | $requireMorphMap | Предотвращает морфинг отношений без карты морфинг. | из Relation |
| статический защищенный int | $selfJoinCount | Количество самосоединений. | из Relation |
| защищенный Model | $throughParent | Экземпляр родительской модели «через». | |
| защищенный Model | $farParent | Экземпляр родительской модели «дальнего» уровня. | |
| защищенный string | $firstKey | Близкий ключ к отношению. | |
| защищенный string | $secondKey | Дальний ключ к отношению. | |
| защищенный string | $localKey | Локальный ключ к отношению. | |
| защищенный string | $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 = ['*'])
Выполнить запрос как операцию «выбрать». | |
| 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 |
| строка | getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа. | |
| Модель | getRelated()
Получить связанную модель отношения. | из Отношения |
| строка | createdAt()
Получить имя столбца «created at». | из Отношения |
| строка | updatedAt()
Получить имя столбца «updated at». | из Отношения |
| строка | relatedUpdatedAt()
Получить имя столбца «updated at» связанной модели. | из Отношения |
| строка | whereInMethod(Модель $model, строка $key)
Получить имя метода «where in» для ленивой загрузки. | из Отношения |
| статический void | requireMorphMap(bool $requireMorphMap = true)
Запретить использование полиморфных отношений без сопоставлений моделей. | из Отношения |
| статический bool | requiresMorphMap()
Определить, требуют ли полиморфные отношения явное сопоставление моделей. | из Отношения |
| статический массив | enforceMorphMap(массив $map, bool $merge = true)
Определить сопоставление морф для полиморфных отношений и потребовать, чтобы все модели morph были явно сопоставлены. | из Отношения |
| статический массив | morphMap(массив $map = null, bool $merge = true)
Установить или получить сопоставление морф для полиморфных отношений. | из Отношения |
| статический массив|null | buildMorphMapFromModels(массив $models = null)
Создает массив с ключом таблицы из имен классов моделей. | из Отношения |
| статический строка|null | getMorphedModel(строка $alias)
Получить модель, связанную с пользовательским полиморфным типом. | из Отношения |
| void | __clone()
Принудительно клонировать базовый генератор запросов при клонировании. | из Отношения |
| смешанный | getDictionaryKey(смешанный $attribute)
Получить атрибут ключа словаря — при необходимости преобразовав его в строку. | из Взаимодействие со словарем |
| void | performJoin(Генератор $query = null)
Установить предложение join в запросе. | |
| bool | throughParentSoftDeletes()
Определить, использует ли родитель «через» отношения мягкие удаления. | |
| $this | withTrashedParents()
Указать, что в запросе должны быть включены удаленные родительские элементы «через». | |
| массив | buildDictionary(Коллекция $results)
Создать словарь модели, имеющий в качестве ключа внешний ключ отношения. | |
| Модель | firstOrNew(массив $attributes)
Получить первую запись связанной модели, соответствующую атрибутам, или создать ее. | |
| Модель | updateOrCreate(массив $attributes, массив $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить ее значениями. | |
| Модель|HasManyThrough | firstWhere(Замыкание|строка|массив $column, смешанный $operator = null, смешанный $value = null, строка $boolean = 'and')
Добавить базовое условие where в запрос и вернуть первый результат. | |
| смешанный | first(массив $columns = ['*'])
Выполнить запрос и получить первую связанную модель. | |
| Модель|HasManyThrough | firstOrFail(массив $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение. | |
| Модель|Коллекция|смешанный | firstOr(Замыкание|массив $columns = ['*'], Замыкание $callback = null)
Выполнить запрос и получить первый результат или вызвать обратный вызов. | |
| Модель|Коллекция|null | find(смешанный $id, массив $columns = ['*'])
Найти связанную модель по ее первичному ключу. | |
| Коллекция | findMany(Arrayable|массив $ids, массив $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам. | |
| Модель|Коллекция | findOrFail(смешанный $id, массив $columns = ['*'])
Найти связанную модель по ее первичному ключу или выбросить исключение. | |
| Модель|Коллекция|смешанный | findOr(смешанный $id, Замыкание|массив $columns = ['*'], Замыкание $callback = null)
Найти связанную модель по ее первичному ключу или вызвать обратный вызов. | |
| LengthAwarePaginator | paginate(целое|null $perPage = null, массив $columns = ['*'], строка $pageName = 'page', целое $page = null)
Получить страницу для оператора «выбрать». | |
| Paginator | simplePaginate(целое|null $perPage = null, массив $columns = ['*'], строка $pageName = 'page', целое|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)
Разбить результаты запроса на куски по сравниванию числовых идентификаторов. | |
| 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)
Выполнить запрос лениво, разбивая результаты запроса на куски по сравниванию идентификаторов. | |
| 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)
Выбросить исключение BadMethodCall для данного метода.
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)
Создает новый экземпляр отношения has many through.
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()
Получить экземпляр базового обработчика запросов.
Model getParent()
Получить родительскую модель связи.
string getQualifiedParentKeyName()
Получить полное имя родительского ключа.
Model getRelated()
Получить связанную модель связи.
string createdAt()
Получить имя столбца «created at».
string updatedAt()
Получить имя столбца «updated at».
string relatedUpdatedAt()
Получить имя столбца «updated at» связанной модели.
protected string whereInMethod(Model $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)
Получить атрибут ключа словаря — при необходимости привести его к строковому типу.
protected void performJoin(Builder $query = null)
Установить условие объединения в запросе.
bool throughParentSoftDeletes()
Определить, использует ли родительский элемент «через» связь мягкое удаление.
$this withTrashedParents()
Указать, что в запросе должны быть включены удалённые родительские элементы «через».
protected array buildDictionary(Collection $results)
Создать словарь модели, индексированный по внешнему ключу связи.
Модель firstOrNew(array $attributes)
Получить первую запись связанной модели, соответствующую атрибутам, или создать новую.
Модель updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями.
Модель|HasManyThrough firstWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')
Добавить базовое условие WHERE к запросу и вернуть первый результат.
mixed first(array $columns = ['*'])
Выполнить запрос и получить первую связанную модель.
Модель|HasManyThrough firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Модель|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)
Разбить результаты запроса на куски по численным идентификаторам.
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)
Запрос в режиме отложенного выполнения, разбивая результаты запроса по сравниванию идентификаторов.
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/9.x/Illuminate/Database/Eloquent/Relations/HasManyThrough.html