HasOne
класс HasOne расширяет HasOneOrMany и реализует SupportsPartialRelations (Просмотреть исходный код)
Свойства
| ComparesRelatedModels | |
| CanBeOneOfMany | |
| SupportsDefaultModels | |
| InteractsWithDictionary | |
| ForwardsCalls | |
| Macroable |
Свойства
| static protected array | $macros | Зарегистрированные строковые макросы. |
из Macroable |
| protected Builder | $query | Экземпляр билдера запросов Eloquent. |
из Relation |
| protected Model | $parent | Экземпляр родительской модели. |
из Relation |
| protected Model | $related | Экземпляр связанной модели. |
из Relation |
| static protected bool | $constraints | Указывает, добавляет ли отношение ограничения. |
из Relation |
| static array | $morphMap | Массив для сопоставления имен классов с их именами морфий в базе данных. |
из Relation |
| static protected bool | $requireMorphMap | Предотвращает морфийные отношения без морфийного отображения. |
из Relation |
| static protected int | $selfJoinCount | Количество самосоединений. |
из Relation |
| protected string | $foreignKey | Внешний ключ родительской модели. |
из HasOneOrMany |
| protected string | $localKey | Локальный ключ родительской модели. |
из HasOneOrMany |
| protected bool | $isOneOfMany | Определяет, является ли отношение одним из многих. |
из CanBeOneOfMany |
| protected string | $relationName | Имя отношения. |
из CanBeOneOfMany |
| protected Builder|null | $oneOfManySubQuery | Экземпляр билдера подзапроса для внутреннего соединения одного из многих. |
из CanBeOneOfMany |
| protected Closure|array|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 $parent, string $foreignKey, string $localKey)
Создать новый экземпляр отношения "один ко многим" или "один к одному". | from HasOneOrMany |
| static mixed | noConstraints(Closure $callback)
Выполнить обратный вызов с отключенными ограничениями на отношении. | from Relation |
| void | addConstraints()
Установить основные ограничения на запрос отношения. | from HasOneOrMany |
| void | addEagerConstraints(array $models)
Установить ограничения для нетерпеливой загрузки отношения. | from HasOneOrMany |
| 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 Relation |
| 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 CanBeOneOfMany |
| Builder | getQuery()
Получить основной запрос для отношения. | from Relation |
| Builder | getBaseQuery()
Получить основной запрос, управляющий построителем Eloquent. | from Relation |
| Model | getParent()
Получить родительскую модель отношения. | from Relation |
| string | getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа. | from HasOneOrMany |
| Model | getRelated()
Получить связанную модель отношения. | from Relation |
| string | createdAt()
Получить имя столбца «created at». | from Relation |
| string | updatedAt()
Получить имя столбца «updated at». | from Relation |
| string | relatedUpdatedAt()
Получить имя столбца «updated at» связанной модели. | from Relation |
| string | whereInMethod(Model $model, string $key)
Получить имя метода «where in» для жадной загрузки. | 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 |
| Model | make(array $attributes = [])
Создать и вернуть несохраненный экземпляр связанной модели. | from HasOneOrMany |
| Collection | makeMany(iterable $records)
Создать и вернуть несохраненные экземпляры связанных моделей. | from HasOneOrMany |
| array | matchOne(array $models, Collection $results, string $relation)
Сопоставить результаты жадной загрузки с их единственными родителями. | from HasOneOrMany |
| array | matchMany(array $models, Collection $results, string $relation)
Сопоставить результаты жадной загрузки с их множественными родителями. | from HasOneOrMany |
| array | matchOneOrMany(array $models, Collection $results, string $relation, string $type)
Сопоставить результаты жадной загрузки с их множественными родителями. | from HasOneOrMany |
| mixed | getRelationValue(array $dictionary, string $key, string $type)
Получить значение отношения по типу один-ко-многим. | from HasOneOrMany |
| array | buildDictionary(Collection $results)
Создать словарь моделей, индексированный по внешнему ключу отношения. | from HasOneOrMany |
| Collection|Model | findOrNew(mixed $id, array $columns = ['*'])
Найти модель по первичному ключу или вернуть новый экземпляр связанной модели. | from HasOneOrMany |
| Model | firstOrNew(array $attributes = [], array $values = [])
Получить первую связанную запись, соответствующую атрибутам, или создать её. | from HasOneOrMany |
| Model | firstOrCreate(array $attributes = [], array $values = [])
Получить первую связанную запись, соответствующую атрибутам, или создать её. | from HasOneOrMany |
| Model | updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями. | from HasOneOrMany |
| Model|false | save(Model $model)
Прикрепить экземпляр модели к родительской модели. | from HasOneOrMany |
| iterable | saveMany(iterable $models)
Прикрепить коллекцию моделей к родительскому экземпляру. | from HasOneOrMany |
| Модель | create(array $attributes = [])
Создать новый экземпляр связанной модели. | из HasOneOrMany |
| Модель | forceCreate(array $attributes = [])
Создать новый экземпляр связанной модели. Разрешить массовое назначение. | из HasOneOrMany |
| Коллекция | createMany(iterable $records)
Создать коллекцию новых экземпляров связанной модели. | из HasOneOrMany |
| void | setForeignAttributesForCreate(Модель $model)
Установить внешний идентификатор для создания связанной модели. | из HasOneOrMany |
| Билдер | getRelationExistenceQueryForSelfRelation(Билдер $query, Билдер $parentQuery, array|mixed $columns = ['*'])
Добавить ограничения для запроса отношения на том же столе. | из HasOneOrMany |
| строка | getExistenceCompareKey()
Получить ключ для сравнения с ключом родителя в запросе «has». | из HasOneOrMany |
| смешанный | getParentKey()
Получить значение ключа родительской модели. | из ComparesRelatedModels |
| строка | getForeignKeyName()
Получить простой внешний ключ. | из HasOneOrMany |
| строка | getQualifiedForeignKeyName()
Получить внешний ключ для отношения. | из HasOneOrMany |
| строка | getLocalKeyName()
Получить локальный ключ для отношения. | из HasOneOrMany |
| булево | is(Модель|null $model)
Определить, является ли модель связанным экземпляром отношения. | из ComparesRelatedModels |
| булево | isNot(Модель|null $model)
Определить, не является ли модель связанным экземпляром отношения. | из ComparesRelatedModels |
| смешанный | getRelatedKeyFrom(Модель $model)
Получить значение внешнего ключа модели. | |
| булево | compareKeys(mixed $parentKey, mixed $relatedKey)
Сравнить ключ родителя с ключом связанного элемента. | из ComparesRelatedModels |
| void | addOneOfManySubQueryConstraints(Билдер $query, string|null $column = null, string|null $aggregate = null)
Добавить ограничения для подзапроса внутреннего объединения для одного из многих отношений. | |
| массив|строка | 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 |
| строка | 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 |
| Model | newRelatedInstanceFor(Model $parent)
Создать новую связанную сущность для заданной сущности. | |
| $this | withDefault(Closure|array|bool $callback = true)
Возвращает новую сущность модели в случае, если отношение отсутствует. | из SupportsDefaultModels |
| Model|null | getDefaultFor(Model $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)
Выбросить исключение BadMethodCallException для указанного метода.
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()
Получить отношение для жадной загрузки.
Модель 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 = ['*'])
Добавить ограничения для внутреннего запроса проверки существования отношения.
В сущности, эти запросы сравнивают по именам столбцов, например, «whereColumn».
string getRelationCountHash(bool $incrementJoinCount = true)
Получить хэш таблицы соединения отношения.
protected array getKeys(array $models, string|null $key = null)
Получить все первичные ключи для массива моделей.
protected Builder getRelationQuery()
Получить билдер запроса, который будет содержать ограничения отношения.
Builder getQuery()
Получить базовый запрос для отношения.
Builder getBaseQuery()
Получить базовый билдер запроса, управляющий билдером Eloquent.
Модель getParent()
Получить родительскую модель отношения.
string getQualifiedParentKeyName()
Получить полное квалифицированное имя родительского ключа.
Модель getRelated()
Получить связанную модель отношения.
string createdAt()
Получить имя столбца "created at".
string updatedAt()
Получить имя столбца "updated at".
string relatedUpdatedAt()
Получить имя столбца "updated at" связанной модели.
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)
Определить отображение morph для полиморфных отношений и потребовать явного сопоставления всех моделей morph.
static array morphMap(array $map = null, bool $merge = true)
Установить или получить отображение morph для полиморфных отношений.
static protected array|null buildMorphMapFromModels(array $models = null)
Создаёт таблично-индексированный массив из имён классов моделей.
static string|null getMorphedModel(string $alias)
Получить модель, связанную с пользовательским полиморфным типом.
void __clone()
Принудительное клонирование базового билдера запросов при клонировании.
protected mixed getDictionaryKey(mixed $attribute)
Получить атрибут ключа словаря — при необходимости привести его к строке.
Модель make(array $attributes = [])
Создать и вернуть незасохранённую экземпляр связанной модели.
Коллекция makeMany(iterable $records)
Создать и вернуть незасохранённые экземпляры связанных моделей.
array matchOne(array $models, Коллекция $results, string $relation)
Сопоставить результаты ленивой загрузки с их единственным родительским элементом.
array matchMany(array $models, Коллекция $results, string $relation)
Сопоставить результаты ленивой загрузки с их многими родительскими элементами.
protected array matchOneOrMany(array $models, Коллекция $results, string $relation, string $type)
Сопоставить результаты ленивой загрузки с их многими родительскими элементами.
protected mixed getRelationValue(array $dictionary, string $key, string $type)
Получить значение отношения по одному или множественному типу.
protected array buildDictionary(Коллекция $results)
Создать словарь моделей, индексированный по внешнему ключу отношения.
Collection|Модель findOrNew(mixed $id, array $columns = ['*'])
Найти модель по её первичному ключу или вернуть новый экземпляр связанной модели.
Модель firstOrNew(array $attributes = [], array $values = [])
Получить первую запись связанной модели, соответствующую атрибутам, или создать её экземпляр.
Модель firstOrCreate(array $attributes = [], array $values = [])
Получить первую запись связанной модели, соответствующую атрибутам, или создать её.
Модель updateOrCreate(array $attributes, array $values = [])
Создать или обновить связанную запись, соответствующую атрибутам, и заполнить её значениями.
iterable saveMany(iterable $models)
Присоединить коллекцию моделей к родительскому экземпляру.
Модель create(array $attributes = [])
Создать новый экземпляр связанной модели.
Модель forceCreate(array $attributes = [])
Создать новый экземпляр связанной модели. Разрешить привязку по массе.
Коллекция createMany(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 $model)
Получить значение внешнего ключа модели.
protected bool compareKeys(mixed $parentKey, mixed $relatedKey)
Сравнить родительский ключ с связанным ключом.
void addOneOfManySubQueryConstraints(Builder $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)
Указывает, что отношение является единственным результатом более сложной связи «один ко многим».
$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()
Угадать имя отношения «hasOne» через стек вызовов.
bool isOneOfMany()
Определить, является ли отношение отношением «один из многих».
string getRelationName()
Получить имя отношения.
$this withDefault(Closure|array|bool $callback = true)
Возвращает новый экземпляр модели в случае, если отношение отсутствует.
protected Модель|null getDefaultFor(Модель $parent)
Получить значение по умолчанию для этого отношения.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/8.x/Illuminate/Database/Eloquent/Relations/HasOne.html