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