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)
Создать новый экземпляр связи "имеет много через". | |
| 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 |
| Model | getParent()
Получить родительскую модель отношения. | from Relation |
| string | getQualifiedParentKeyName()
Получить полное имя родительского ключа. |
| Модель | getRelated()
Получить связанную модель отношения. | из Отношения |
| строка | createdAt()
Получить имя столбца "created at". | из Отношения |
| строка | updatedAt()
Получить имя столбца "updated at". | из Отношения |
| строка | relatedUpdatedAt()
Получить имя столбца "updated at" связанной модели. | из Отношения |
| строка | whereInMethod(Модель $model, string $key)
Получить имя метода "where in" для леничной загрузки. | из Отношения |
| статический void | requireMorphMap(bool $requireMorphMap = true)
Запретить использование полиморфных отношений без сопоставления моделей. | из Отношения |
| статический bool | requiresMorphMap()
Определить, требуют ли полиморфные отношения явного сопоставления моделей. | из Отношения |
| статический массив | enforceMorphMap(array $map, bool $merge = true)
Определить карту морфизма для полиморфных отношений и потребовать явного сопоставления всех моделей морфизма. | из Отношения |
| статический массив | morphMap(array $map = null, bool $merge = true)
Установить или получить карту морфизма для полиморфных отношений. | из Отношения |
| статический массив|null | buildMorphMapFromModels(array $models = null)
Создаёт таблично-ключевой массив из имён классов моделей. | из Отношения |
| статический строка|null | getMorphedModel(string $alias)
Получить модель, связанную с пользовательским полиморфным типом. | из Отношения |
| void | __clone()
Принудительно клонировать базовый билдер запросов при клонировании. | из Отношения |
| смешанный тип | getDictionaryKey(смешанный тип $attribute)
Получить атрибут ключа словаря, при необходимости преобразуя его в строку. | из Взаимодействие со словарем |
| void | performJoin(Билдер $query = null)
Установить предложение JOIN в запросе. | |
| bool | throughParentSoftDeletes()
Определить, использует ли родитель "через" отношение Soft Deletes. | |
| $this | withTrashedParents()
Указать, что в запросе должны быть включены удалённые родительские элементы "через". | |
| массив | buildDictionary(Коллекция $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 к запросу и вернуть первый результат. | |
| смешанный тип | first(array $columns = ['*'])
Выполнить запрос и получить первую связанную модель. | |
| Модель|HasManyThrough | firstOrFail(array $columns = ['*'])
Выполнить запрос и получить первый результат или бросить исключение. | |
| Модель|Коллекция|null | find(смешанный тип $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу. | |
| Коллекция | findMany(Arrayable|array $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам. | |
| Модель|Коллекция | findOrFail(смешанный тип $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или бросить исключение. | |
| 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)
Разбить результаты запроса на части, сравнивая числовые идентификаторы. | |
| Генератор | 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 = ['*'])
Добавить ограничения для запроса связи на том же столе, что и родитель через. | |
| string | getQualifiedFarKeyName()
Получить квалифицированное внешнее ключевое поле на связанной модели. | |
| string | getFirstKeyName()
Получить внешнее ключевое поле на модели "через". | |
| string | getQualifiedFirstKeyName()
Получить квалифицированное внешнее ключевое поле на модели "через". | |
| string | getForeignKeyName()
Получить внешнее ключевое поле на связанной модели. | |
| string | getQualifiedForeignKeyName()
Получить квалифицированное внешнее ключевое поле на связанной модели. | |
| string | getLocalKeyName()
Получить локальное ключевое поле на дальней родительской модели. | |
| string | getQualifiedLocalKeyName()
Получить квалифицированное локальное ключевое поле на дальней родительской модели. | |
| string | 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 создателем запроса.
Модель getParent()
Получить родительскую модель отношения.
строка getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа.
Модель getRelated()
Получить связанную модель отношения.
строка createdAt()
Получить имя столбца «создано в».
строка updatedAt()
Получить имя столбца «обновлено в».
строка relatedUpdatedAt()
Получить имя столбца «обновлено в» для связанной модели.
protected строка whereInMethod(Модель $model, string $key)
Получить имя метода «where in» для ленивой загрузки.
static void requireMorphMap(bool $requireMorphMap = true)
Препятствовать использованию полиморфных отношений без сопоставлений моделей.
static bool requiresMorphMap()
Определить, требуют ли полиморфные отношения явного сопоставления моделей.
static массив enforceMorphMap(array $map, bool $merge = true)
Определить карту полиморфных отношений и потребовать, чтобы все модели, подверженные преобразованию, были явно сопоставлены.
static массив morphMap(array $map = null, bool $merge = true)
Установить или получить карту полиморфных отношений.
static protected массив|null buildMorphMapFromModels(array $models = null)
Создаёт таблично-индексированный массив из имён классов моделей.
static строка|null getMorphedModel(string $alias)
Получить модель, связанную с пользовательским полиморфным типом.
void __clone()
Принудительно клонировать базовый создатель запроса при клонировании.
protected смешанный getDictionaryKey(mixed $attribute)
Получить атрибут ключа словаря — преобразовав его в строку при необходимости.
protected void performJoin(Builder $query = null)
Установить предложение объединения в запросе.
bool throughParentSoftDeletes()
Определить, использует ли родитель «через» отношение мягкие удаления.
$this withTrashedParents()
Указать, что в запросе следует включать удалённых родительских элементов «через».
protected массив buildDictionary(Коллекция $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 = ['*'])
Выполнить запрос и получить первый результат или выбросить исключение.
Модель|Коллекция|null find(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу.
Коллекция findMany(Arrayable|array $ids, array $columns = ['*'])
Найти несколько связанных моделей по их первичным ключам.
Модель|Коллекция findOrFail(mixed $id, array $columns = ['*'])
Найти связанную модель по её первичному ключу или выбросить исключение.
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 = ['*'])
Установить условие выбора для запроса отношения.
bool chunk(int $count, callable $callback)
Разбить результаты запроса на части.
bool chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Разбить результаты запроса на части по числовым идентификаторам.
Генератор 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/8.x/Illuminate/Database/Eloquent/Relations/HasManyThrough.html