HasOne
класс HasOne расширяет HasOneOrMany и реализует SupportsPartialRelations (View source)
Свойства
| ComparesRelatedModels | |
| CanBeOneOfMany | |
| SupportsDefaultModels | |
| InteractsWithDictionary | |
| ForwardsCalls | |
| Macroable |
Свойства
| статический защищённый массив | $macros | Зарегистрированные строковые макросы. | из Macroable |
| защищённый Builder | $query | Экземпляр билдера запросов Eloquent. | из Relation |
| защищённый Model | $parent | Экземпляр родительской модели. | из Relation |
| защищённый Model | $related | Экземпляр связанной модели. | из Relation |
| статический защищённый булево | $constraints | Указывает, добавляет ли отношение ограничения. | из Relation |
| статический массив | $morphMap | Массив для сопоставления имён классов с их именами морфинг в базе данных. | из Relation |
| статический защищённый булево | $requireMorphMap | Предотвращает морфинг отношений без морфинг-карты. | из Relation |
| статический защищённый целое | $selfJoinCount | Количество самосоединений. | из Relation |
| защищённая строка | $foreignKey | Внешний ключ родительской модели. | из HasOneOrMany |
| защищённая строка | $localKey | Локальный ключ родительской модели. | из HasOneOrMany |
| защищённый булево | $isOneOfMany | Определяет, является ли отношение один-ко-многим. | из CanBeOneOfMany |
| защищённая строка | $relationName | Имя отношения. | из CanBeOneOfMany |
| защищённый Builder|null | $oneOfManySubQuery | Экземпляр билдера подзапроса для одного из многих внутреннего соединения. | из CanBeOneOfMany |
| защищённый Closure|массив|булево | $withDefault | Указывает, следует ли использовать экземпляр модели по умолчанию. | из SupportsDefaultModels |
Методы
| mixed | forwardCallTo(mixed $object, string $method, array $parameters)
Передать вызов метода заданному объекту. | из ForwardsCalls |
| mixed | forwardDecoratedCallTo(mixed $object, string $method, array $parameters)
Передать вызов метода заданному объекту, вернув $this, если переданный вызов вернул себя. | из ForwardsCalls |
| static void | throwBadMethodCallException(string $method)
Выбросить исключение о неправильном вызове метода для данного метода. | из ForwardsCalls |
| static void | macro(string $name, object|callable $macro)
Зарегистрировать пользовательский макрос. | из Macroable |
| static void | mixin(object $mixin, bool $replace = true)
Смешать другой объект в класс. | из Macroable |
| static bool | hasMacro(string $name)
Проверяет, зарегистрирован ли макрос. | из Macroable |
| static void | flushMacros()
Очистить существующие макросы. | из Macroable |
| static mixed | __callStatic(string $method, array $parameters)
Динамически обрабатывать вызовы к классу. | из Macroable |
| mixed | __call(string $method, array $parameters)
Динамически обрабатывать вызовы к классу. | из Macroable |
| void | __construct(Builder $query, Model $parent, string $foreignKey, string $localKey)
Создать новый экземпляр отношения один-к-одному или один-ко-многим. | из HasOneOrMany |
| static mixed | noConstraints(Closure $callback)
Выполнить обратный вызов с отключенными ограничениями для отношения. | из Relation |
| void | addConstraints()
Установить базовые ограничения для запроса отношения. | из HasOneOrMany |
| void | addEagerConstraints(array $models)
Установить ограничения для ленивой загрузки отношения. | из HasOneOrMany |
| array | initRelation(array $models, string $relation)
Инициализировать отношение для набора моделей. | |
| array | match(array $models, Collection $results, string $relation)
Сопоставить загруженные лениво результаты с их родителями. | |
| mixed | getResults()
Получить результаты отношения. | |
| Collection | getEager()
Получить отношение для ленивой загрузки. | из Relation |
| Model | sole(array|string $columns = ['*'])
Выполнить запрос и получить первый результат, если это единственная совпадающая запись. | из Relation |
| Collection | get(array $columns = ['*'])
Выполнить запрос как операцию «select». | из Relation |
| void | touch()
Обновить все связанные модели для отношения. | из Relation |
| int | rawUpdate(array $attributes = [])
Выполнить необработанное обновление базового запроса. | из Relation |
| Builder | getRelationExistenceCountQuery(Builder $query, Builder $parentQuery)
Добавить ограничения для запроса подсчёта отношения. | из Relation |
| Builder | getRelationExistenceQuery(Builder $query, Builder $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для внутреннего запроса существования отношения. | |
| string | getRelationCountHash(bool $incrementJoinCount = true)
Получить хэш таблицы соединения для отношения. | из Relation |
| array | getKeys(array $models, string|null $key = null)
Получить все первичные ключи для массива моделей. | из Relation |
| Builder | getRelationQuery()
Получить экземпляр билдера запроса, который будет содержать ограничения отношения. | из CanBeOneOfMany |
| Builder | getQuery()
Получить базовый запрос для отношения. | из Relation |
| Builder | getBaseQuery()
Получить базовый билдер запроса, управляющий билдером Eloquent. | из Relation |
| Builder | toBase()
Получить экземпляр базового билдера запроса. | из Relation |
| Модель | getParent()
Получить родительскую модель отношения. | из Отношения |
| строка | getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа. | из ОдноКмногие |
| Модель | getRelated()
Получить связанную модель отношения. | из Отношения |
| строка | createdAt()
Получить имя столбца «создано в». | из Отношения |
| строка | updatedAt()
Получить имя столбца «обновлено в». | из Отношения |
| строка | relatedUpdatedAt()
Получить имя столбца «обновлено в» для связанной модели. | из Отношения |
| строка | whereInMethod(Модель $model, строка $key)
Получить имя метода «where in» для ленивой загрузки. | из Отношения |
| статический void | requireMorphMap(bool $requireMorphMap = true)
Запретить использование полиморфных отношений без сопоставления моделей. | из Отношения |
| статический bool | requiresMorphMap()
Определить, требуют ли полиморфные отношения явное сопоставление моделей. | из Отношения |
| статический массив | enforceMorphMap(массив $map, bool $merge = true)
Определить сопоставление типов для полиморфных отношений и потребовать, чтобы все модели с морфированием были явно сопоставлены. | из Отношения |
| статический массив | morphMap(массив $map = null, bool $merge = true)
Установить или получить сопоставление типов для полиморфных отношений. | из Отношения |
| статический массив|null | buildMorphMapFromModels(массив $models = null)
Строит таблично-индексированный массив из имен классов моделей. | из Отношения |
| статический строка|null | getMorphedModel(строка $alias)
Получить модель, связанную с пользовательским полиморфным типом. | из Отношения |
| void | __clone()
Принудительно клонировать базовый создатель запросов при клонировании. | из Отношения |
| смешанный | getDictionaryKey(смешанный $attribute)
Получить атрибут ключа словаря — привести его к строке, если необходимо. | из Взаимодействие со словарем |
| Модель | make(массив $attributes = [])
Создать и вернуть несохраненный экземпляр связанной модели. | из ОдноКмногие |
| Коллекция | makeMany(итерируемый $records)
Создать и вернуть несохраненный экземпляр связанных моделей. | из ОдноКмногие |
| массив | matchOne(массив $models, Коллекция $results, строка $relation)
Сопоставить загруженные по требованию результаты с их единственными родителями. | из ОдноКмногие |
| массив | matchMany(массив $models, Коллекция $results, строка $relation)
Сопоставить загруженные по требованию результаты с их множественными родителями. | из ОдноКмногие |
| массив | matchOneOrMany(массив $models, Коллекция $results, строка $relation, строка $type)
Сопоставить загруженные по требованию результаты с их множественными родителями. | из ОдноКмногие |
| смешанный | getRelationValue(массив $dictionary, строка $key, строка $type)
Получить значение отношения по типу один или многие. | из ОдноКмногие |
| массив | buildDictionary(Коллекция $results)
Создать словарь моделей, индексированный по внешнему ключу отношения. | из ОдноКмногие |
| Коллекция|Модель | findOrNew(смешанный $id, массив $columns = ['*'])
Найти модель по ее первичному ключу или вернуть новый экземпляр связанной модели. | из ОдноКмногие |
| Модель | firstOrNew(массив $attributes = [], массив $values = [])
Получить первую связанную запись, соответствующую атрибутам, или создать ее. | из ОдноКмногие |
| Модель | firstOrCreate(массив $attributes = [], массив $values = [])
Получить первую связанную запись, соответствующую атрибутам, или создать ее. | из ОдноКмногие |
| Модель | updateOrCreate(массив $attributes, массив $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить ее значениями. | из ОдноКмногие |
| Модель|ложь | save(Модель $model)
Прикрепить экземпляр модели к родительской модели. | из ОдноКмногие |
| Модель|false | saveQuietly(Модель $model)
Прикрепить экземпляр модели к родительской модели без поднятия каких-либо событий. | из HasOneOrMany |
| iterable | saveMany(iterable $models)
Прикрепить коллекцию моделей к родительскому экземпляру. | из HasOneOrMany |
| iterable | saveManyQuietly(iterable $models)
Прикрепить коллекцию моделей к родительскому экземпляру без поднятия каких-либо событий родительской модели. | из HasOneOrMany |
| Модель | create(array $attributes = [])
Создать новый экземпляр связанной модели. | из HasOneOrMany |
| Модель | createQuietly(array $attributes = [])
Создать новый экземпляр связанной модели без поднятия каких-либо событий родительской модели. | из HasOneOrMany |
| Модель | forceCreate(array $attributes = [])
Создать новый экземпляр связанной модели. Разрешить привязку полей. | из HasOneOrMany |
| Коллекция | createMany(iterable $records)
Создать коллекцию новых экземпляров связанной модели. | из HasOneOrMany |
| Коллекция | createManyQuietly(iterable $records)
Создать коллекцию новых экземпляров связанной модели без поднятия каких-либо событий родительской модели. | из HasOneOrMany |
| void | setForeignAttributesForCreate(Модель $model)
Установить внешний идентификатор для создания связанной модели. | из HasOneOrMany |
| Библиотека | getRelationExistenceQueryForSelfRelation(Библиотека $query, Библиотека $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения на одном и том же столе. | из HasOneOrMany |
| string | getExistenceCompareKey()
Получить ключ для сравнения с ключом родительской модели в запросе "has". | из HasOneOrMany |
| mixed | getParentKey()
Получить значение ключа родительской модели. | из ComparesRelatedModels |
| string | getForeignKeyName()
Получить простой внешний ключ. | из HasOneOrMany |
| string | getQualifiedForeignKeyName()
Получить внешний ключ для отношения. | из HasOneOrMany |
| string | getLocalKeyName()
Получить локальный ключ для отношения. | из HasOneOrMany |
| bool | is(Модель|null $model)
Определить, является ли модель связанным экземпляром отношения. | из ComparesRelatedModels |
| bool | isNot(Модель|null $model)
Определить, не является ли модель связанным экземпляром отношения. | из ComparesRelatedModels |
| mixed | getRelatedKeyFrom(Модель $model)
Получить значение внешнего ключа модели. | |
| bool | compareKeys(mixed $parentKey, mixed $relatedKey)
Сравнить родительский ключ с родственным ключом. | из ComparesRelatedModels |
| void | addOneOfManySubQueryConstraints(Библиотека $query, string|null $column = null, string|null $aggregate = null)
Добавить ограничения для подзапроса внутреннего объединения для отношений "один из многих". | |
| array|string | getOneOfManySubQuerySelectColumns()
Получить столбцы, которые должны быть выбраны подзапросом "один из многих". | |
| void | addOneOfManyJoinSubQueryConstraints(JoinClause $join)
Добавить ограничения запроса объединения для отношений "один из многих". | |
| $this | ofMany(string|array|null $column = 'id', string|Closure|null $aggregate = 'MAX', string|null $relation = null)
Указать, что отношение является единственным результатом более широкого отношения "один ко многим". | из CanBeOneOfMany |
| $this | latestOfMany(string|array|null $column = 'id', string|null $relation = null)
Указать, что отношение является последним единственным результатом более широкого отношения "один ко многим". | из CanBeOneOfMany |
| $this | oldestOfMany(string|array|null $column = 'id', string|null $relation = null)
Указать, что отношение является самым старым единственным результатом более широкого отношения "один ко многим". | из CanBeOneOfMany |
| string | getDefaultOneOfManyJoinAlias(string $relation)
Получить стандартный псевдоним для внутреннего предложения объединения "один из многих". | из CanBeOneOfMany |
| Билдер | newOneOfManySubQuery(string|array $groupBy, string|null $column = null, string|null $aggregate = null)
Получить новый запрос для связанной модели, сгруппировав запрос по заданному столбцу, часто внешнему ключу связи. | из CanBeOneOfMany |
| void | addOneOfManyJoinSubQuery(Билдер $parent, Билдер $subQuery, string $on)
Добавить подзапрос объединения к заданному запросу по заданному столбцу и внешнему ключу связи. | из CanBeOneOfMany |
| void | mergeOneOfManyJoinsTo(Билдер $query)
Объединить объединения запроса связи с данным билдером запроса. | из CanBeOneOfMany |
| Билдер|void | getOneOfManySubQuery()
Получить экземпляр билдера подзапроса внутреннего объединения для «один из многих». | из CanBeOneOfMany |
| string | qualifySubSelectColumn(string $column)
Получить квалифицированное имя столбца для связи «один из многих» с использованием псевдонима подзапроса объединения. | из CanBeOneOfMany |
| string | qualifyRelatedColumn(string $column)
Квалифицировать связанный столбец, используя имя связанной таблицы, если он не квалифицирован. | из CanBeOneOfMany |
| string | guessRelationship()
Угадать имя связи «один ко многим» с помощью трассировки стека. | из CanBeOneOfMany |
| bool | isOneOfMany()
Определить, является ли связь связью «один ко многим». | из CanBeOneOfMany |
| string | getRelationName()
Получить имя связи. | из CanBeOneOfMany |
| Модель | 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 $parent, string $foreignKey, string $localKey)
Создать новый экземпляр отношения «один к одному» или «многие ко многим».
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 = ['*'])
Добавить ограничения для внутреннего запроса существования отношения.
В сущности, эти запросы сравнивают имена столбцов, например, «whereColumn».
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)
Получить атрибут словаря ключей — преобразовав его в строку, если необходимо.
Model make(array $attributes = [])
Создать и вернуть несохраненный экземпляр связанной модели.
Collection makeMany(iterable $records)
Создать и вернуть несохраненный экземпляр связанных моделей.
array matchOne(array $models, Collection $results, string $relation)
Сопоставить загруженные результаты с их единственными родителями.
array matchMany(array $models, Collection $results, string $relation)
Сопоставить результаты жадно загруженных данных со своими родительскими многими элементами.
protected array matchOneOrMany(array $models, Collection $results, string $relation, string $type)
Сопоставить результаты жадно загруженных данных со своими родительскими многими элементами.
protected mixed getRelationValue(array $dictionary, string $key, string $type)
Получить значение отношения по типу один или много.
protected array buildDictionary(Collection $results)
Построить словарь моделей, индексированный по внешнему ключу отношения.
Collection|Model findOrNew(mixed $id, array $columns = ['*'])
Найти модель по ее первичному ключу или вернуть новый экземпляр связанной модели.
Model firstOrNew(array $attributes = [], array $values = [])
Получить первую связанную модель, соответствующую атрибутам, или создать ее экземпляр.
Model firstOrCreate(array $attributes = [], array $values = [])
Получить первую связанную запись, соответствующую атрибутам, или создать ее.
Model updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить ее значениями.
Model|false saveQuietly(Model $model)
Прикрепить экземпляр модели к родительской модели без срабатывания событий.
iterable saveMany(iterable $models)
Прикрепить коллекцию моделей к родительскому экземпляру.
iterable saveManyQuietly(iterable $models)
Прикрепить коллекцию моделей к родительскому экземпляру без срабатывания событий у родительской модели.
Model create(array $attributes = [])
Создать новый экземпляр связанной модели.
Model createQuietly(array $attributes = [])
Создать новый экземпляр связанной модели без срабатывания событий у родительской модели.
Model forceCreate(array $attributes = [])
Создать новый экземпляр связанной модели. Разрешить привязку по массе.
Collection createMany(iterable $records)
Создать коллекцию новых экземпляров связанной модели.
Коллекция createManyQuietly(iterable $records)
Создать Коллекцию новых экземпляров связанной модели без поднятия каких-либо событий для родительской модели.
protected void setForeignAttributesForCreate(Модель $model)
Установить внешний идентификатор для создания связанной модели.
Билдер getRelationExistenceQueryForSelfRelation(Билдер $query, Билдер $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса связи на той же таблице.
string getExistenceCompareKey()
Получить ключ для сравнения с родительским ключом в запросе «has».
abstract mixed getParentKey()
Получить значение ключа родительской модели.
string getForeignKeyName()
Получить простой внешний ключ.
string getQualifiedForeignKeyName()
Получить внешний ключ для связи.
string getLocalKeyName()
Получить локальный ключ для связи.
bool is(Модель|null $model)
Определить, является ли модель связанным экземпляром связи.
bool isNot(Модель|null $model)
Определить, не является ли модель связанным экземпляром связи.
protected mixed getRelatedKeyFrom(Модель $model)
Получить значение внешнего ключа модели.
protected bool compareKeys(mixed $parentKey, mixed $relatedKey)
Сравнить родительский ключ со связанным ключом.
void addOneOfManySubQueryConstraints(Билдер $query, string|null $column = null, string|null $aggregate = null)
Добавить ограничения для подзапроса внутреннего объединения для одной из многих связей.
array|string getOneOfManySubQuerySelectColumns()
Получить столбцы, которые должны быть выбраны подзапросом для одной из многих связей.
void addOneOfManyJoinSubQueryConstraints(ПрисоединениеЗапрос $join)
Добавить ограничения запроса объединения для одной из многих связей.
$this ofMany(string|array|null $column = 'id', string|Closure|null $aggregate = 'MAX', string|null $relation = null)
Указать, что связь — это единственный результат более сложной связи один-ко-многим.
$this latestOfMany(string|array|null $column = 'id', string|null $relation = null)
Указать, что связь — это самый последний единственный результат более сложной связи один-ко-многим.
$this oldestOfMany(string|array|null $column = 'id', string|null $relation = null)
Указать, что связь — это самый ранний единственный результат более сложной связи один-ко-многим.
protected string getDefaultOneOfManyJoinAlias(string $relation)
Получить стандартное имя псевдонима для условия внутреннего соединения "один из многих".
protected Builder newOneOfManySubQuery(string|array $groupBy, string|null $column = null, string|null $aggregate = null)
Создать новый запрос для связанной модели, сгруппировав запрос по заданному столбцу, часто по внешнему ключу отношения.
protected void addOneOfManyJoinSubQuery(Builder $parent, Builder $subQuery, string $on)
Добавить подзапрос соединения к заданному запросу по заданному столбцу и внешнему ключу отношения.
protected void mergeOneOfManyJoinsTo(Builder $query)
Объединить соединения запроса отношения с заданным билдером запроса.
Builder|void getOneOfManySubQuery()
Получить экземпляр билдера подзапроса внутреннего соединения "один из многих".
string qualifySubSelectColumn(string $column)
Получить квалифицированное имя столбца для отношения "один-ко-многим", используя псевдоним подзапроса соединения.
protected string qualifyRelatedColumn(string $column)
Квалифицировать связанный столбец, используя имя связанной таблицы, если он не квалифицирован.
protected string guessRelationship()
Угадать имя отношения "один-к-одному" через стек вызовов.
bool isOneOfMany()
Определить, является ли отношение отношением "один-ко-многим".
string getRelationName()
Получить имя отношения.
Model newRelatedInstanceFor(Model $parent)
Создать новый экземпляр связанной модели для данной модели.
$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/9.x/Illuminate/Database/Eloquent/Relations/HasOne.html