Spec-Zone.ru › CakePHP 4.3

Класс EagerLoader

Предоставляет методы для хранения ассоциаций, которые должны быть загружены с помощью eager loading для таблицы после предоставления запроса, и делегирует задачу создания необходимых соединений и оформления результатов, так чтобы эти ассоциации могли быть частью результирующего набора.

Namespace: Cake\ORM

Краткое описание полей

  • $_aliasList protected
    array

    Содержит список имен ассоциаций, которые должны быть загружены с помощью eager loading

  • $_autoFields protected
    bool

    Управляет тем, будут ли поля из связанных таблиц загружены с помощью eager loading. Если установлено значение false, поля из ассоциаций загружаться не будут.

  • $_containOptions protected
    array<string, int>

    Список параметров, принимаемых ассоциациями в contain(), индексированных по ключу для более быстрого доступа

  • $_containments protected
    array<string, mixed>

    Вложенный массив, описывающий ассоциацию, которая должна быть получена, и параметры, которые нужно применить для каждой из них, если таковые имеются

  • $_joinsMap protected
    array

    Сопоставление псевдонимов таблиц, указывающих на объекты ассоциаций, которые они представляют для запроса.

  • $_loadExternal protected
    arrayCake\ORM\EagerLoadable>

    Список ассоциаций, которые должны быть загружены с помощью отдельного запроса

  • $_matching protected
    Cake\ORM\EagerLoader|null

    Другой экземпляр EagerLoader, который будет использоваться для ассоциаций "matching".

  • $_normalized protected
    Cake\ORM\EagerLoadable|arrayCake\ORM\EagerLoadable>|null

    Содержит вложенный массив с скомпилированным деревом containments. Это нормализованная версия предоставленного пользователем массива containments.

Краткое описание методов

  • __clone() public

    Обрабатывает клонирование eager loaders и eager loadables.

  • _buildAssociationsMap() protected

    Внутренний метод для создания карты, которая используется для возвращаемого значения метода associationsMap().

  • _collectKeys() protected

    Вспомогательная функция, используемая для возврата ключей из записей запроса, которые будут использоваться для загрузки ассоциаций с помощью eager loading.

  • _correctStrategy() protected

    Изменяет стратегию извлечения ассоциаций, если это необходимо из-за дубликатов в одной и той же цепочке прямых ассоциаций

  • _fixStrategies() protected

    Перебирает список соединяемых псевдонимов и исправляет стратегии извлечения, чтобы избежать коллизий псевдонимов в генерируемых запросах.

  • _groupKeys() protected

    Вспомогательная функция, используемая для перебора инструкции и извлечения столбцов, определенных в $collectKeys

  • _normalizeContain() protected

    Вспомогательная функция, отвечающая за полную нормализацию глубоких ассоциаций, определенных с помощью contain()

  • _reformatContain() protected

    Форматирует массив containments так, чтобы ассоциации всегда устанавливались в качестве ключей в массиве. Эта функция объединяет исходный массив ассоциаций с новыми предоставленными ассоциациями

  • _resolveJoins() protected

    Вспомогательная функция, используемая для компиляции списка всех ассоциаций, которые могут быть объединены в запросе.

  • addToJoinsMap() public

    Регистрирует псевдоним таблицы, обычно загружаемый как соединение в запросе, как принадлежащий ассоциации. Это помогает гидраторам понять, что делать со столбцами, поступающими из такой объединенной таблицы.

  • associationsMap() public

    Возвращает массив, имеющий в качестве ключей точечный путь ассоциаций, участвующих в этом eager loader. Значения массива будут содержать следующие ключи

  • attachAssociations() public

    Изменяет переданный запрос для применения соединений или любых других преобразований, необходимых для загрузки ассоциаций, описанных в массиве contain. Этот метод не будет изменять запрос для загрузки внешних ассоциаций, то есть тех, которые невозможно загрузить без выполнения отдельного запроса.

  • attachableAssociations() public

    Возвращает массив с ассоциациями, которые могут быть получены с помощью одного запроса, ключи массива - это псевдонимы ассоциаций, а значения будут содержать массив с объектами Cake\ORM\EagerLoadable.

  • clearContain() public

    Удаляет все существующие containments, не основанные на matching.

  • contain() public

    Устанавливает список ассоциаций, которые должны быть загружены с помощью eager loading для определенной таблицы при предоставлении запроса. Список связанных таблиц, переданных этому методу, должен быть предварительно установлен как ассоциации с помощью API таблицы.

  • disableAutoFields() public

    Отключить автоматическую загрузку полей содержащихся ассоциаций.

  • enableAutoFields() public

    Устанавливает, будут ли содержащиеся ассоциации автоматически загружать поля.

  • externalAssociations() public

    Возвращает массив с ассоциациями, которые необходимо извлекать с помощью отдельного запроса, каждое значение массива будет содержать объект {@link \Cake\ORM\EagerLoadable}.

  • getContain() public

    Получает список ассоциаций, которые должны быть загружены с помощью eager loading для определенной таблицы при предоставлении запроса. Список связанных таблиц, переданных этому методу, должен быть предварительно установлен как ассоциации с помощью API таблицы.

  • getMatching() public

    Возвращает текущее дерево ассоциаций, которые должны быть сопоставлены.

  • isAutoFieldsEnabled() public

    Получает информацию о том, будут ли содержащиеся ассоциации автоматически загружать поля.

  • loadExternal() public

    Декорирует переданный объект инструкции, чтобы внедрить данные из ассоциаций, которые невозможно напрямую соединить.

  • normalized() public

    Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены с помощью eager loading для таблицы. Нормализованный массив перестроит исходный массив, сортируя все ассоциации под одним ключом, а специальные параметры - под другим.

  • setMatching() public

    Добавляет новую ассоциацию в список, который будет использоваться для фильтрации результатов любого заданного запроса на основе результатов поиска записей для этой ассоциации. Вы можете передать в этот метод точечно разделенный путь ассоциаций в качестве первого параметра, это приведет к установке всех этих ассоциаций с параметром matching.

Подробное описание методов

__clone() public

__clone(): void

Обрабатывает клонирование eager loaders и eager loadables.

Returns

void

_buildAssociationsMap() protected

_buildAssociationsMap(array $map, arrayCake\ORM\EagerLoadable> $level, bool $matching = false): array

Внутренний метод для построения карты, которая используется для возвращаемого значения метода associationsMap().

Parameters

array $map

Начальный массив для карты.

arrayCake\ORM\EagerLoadable> $level

Массив экземпляров EagerLoadable.

bool $matching optional

Является ли это ассоциацией, загруженной через matching().

Returns

array

_collectKeys() protected

_collectKeys(arrayCake\ORM\EagerLoadable> $external, Cake\ORM\Query $query, Cake\Database\StatementInterface $statement): array

Вспомогательная функция, используемая для возврата ключей из записей запроса, которые будут использоваться для загрузки ассоциаций.

Parameters

arrayCake\ORM\EagerLoadable> $external

Список внешних ассоциаций для загрузки

Cake\ORM\Query $query

Запрос, из которого были сгенерированы результаты

Cake\Database\StatementInterface $statement

Оператор для работы

Returns

array

_correctStrategy() protected

_correctStrategy(Cake\ORM\EagerLoadable $loadable): void

Изменяет стратегию извлечения ассоциаций, если это необходимо из-за дублирования в одной и той же цепочке прямых ассоциаций

Parameters

Cake\ORM\EagerLoadable $loadable

Конфигурация ассоциации

Returns

void

_fixStrategies() protected

_fixStrategies(): void

Перебирает список соединяемых псевдонимов и корректирует стратегии извлечения, чтобы избежать коллизий псевдонимов в генерируемых запросах.

Эта функция работает со ссылками на массивы, которые были сгенерированы функцией _normalizeContain().

Returns

void

_groupKeys() protected

_groupKeys(Cake\Database\Statement\BufferedStatement $statement, array<string, array> $collectKeys): array

Вспомогательная функция, используемая для перебора оператора и извлечения столбцов, определенных в $collectKeys

Parameters

Cake\Database\Statement\BufferedStatement $statement

Оператор для чтения.

array<string, array> $collectKeys

Ключи для сбора

Returns

array

_normalizeContain() protected

_normalizeContain(Cake\ORM\Table $parent, string $alias, array<string, mixed> $options, array<string, mixed> $paths): Cake\ORM\EagerLoadable

Вспомогательная функция, отвечающая за полную нормализацию глубоких ассоциаций, определенных с использованием contain()

Parameters

Cake\ORM\Table $parent

владеющая сторона ассоциации

string $alias

имя ассоциации для загрузки

array<string, mixed> $options

список дополнительных параметров для использования для этой ассоциации

array<string, mixed> $paths

Массив с двумя значениями, первое из которых представляет собой список строк, разделенных точками, представляющих ассоциации, которые ведут к этому $alias в цепочке ассоциаций для загрузки. Второе значение — путь, по которому нужно следовать в свойствах сущностей, чтобы получить запись соответствующей ассоциации.

Returns

Cake\ORM\EagerLoadable

Throws

InvalidArgumentException
Когда включения ссылаются на ассоциации, которые не существуют.

_reformatContain() protected

_reformatContain(array $associations, array $original): array

Форматирует массив включений таким образом, чтобы ассоциации всегда устанавливались в качестве ключей в массиве. Эта функция объединяет исходный массив ассоциаций с новыми предоставленными ассоциациями

Parameters

array $associations

массив включений, предоставленный пользователем

array $original

Исходный массив включений для слияния с новым

Returns

array

_resolveJoins() protected

_resolveJoins(arrayCake\ORM\EagerLoadable> $associations, arrayCake\ORM\EagerLoadable> $matching = []): arrayCake\ORM\EagerLoadable>

Вспомогательная функция, используемая для компиляции списка всех ассоциаций, которые могут быть объединены в запросе.

Parameters

arrayCake\ORM\EagerLoadable> $associations

список ассоциаций, из которых нужно получить соединения.

arrayCake\ORM\EagerLoadable> $matching optional

список ассоциаций, которые должны быть принудительно объединены.

Returns

arrayCake\ORM\EagerLoadable>

addToJoinsMap() public

addToJoinsMap(string $alias, Cake\ORM\Association $assoc, bool $asMatching = false, string|null $targetProperty = null): void

Регистрирует псевдоним таблицы, обычно загружаемый как соединение в запросе, как принадлежащий ассоциации. Это помогает гидраторам понимать, что делать со столбцами, поступающими из такой объединенной таблицы.

Parameters

string $alias

Псевдоним таблицы, как он отображается в запросе.

Cake\ORM\Association $assoc

Объект ассоциации, который представляет псевдоним; будет нормализован

bool $asMatching optional

Следует ли рассматривать результаты этого соединения как ассоциацию «соответствия».

string|null $targetProperty optional

Имя свойства, в котором должны быть вложены результаты соединения. Если не передано, будет использовано свойство по умолчанию для ассоциации.

Returns

void

associationsMap() public

associationsMap(Cake\ORM\Table $table): array

Возвращает массив, имеющий в качестве ключей точечный путь ассоциаций, которые участвуют в этом eager loader. Значения массива будут содержать следующие ключи

  • alias: Псевдоним ассоциации
  • instance: Экземпляр ассоциации
  • canBeJoined: Будет ли ассоциация загружена с использованием JOIN
  • entityClass: Сущность, которая должна использоваться для гидратации результатов
  • nestKey: Точечный путь, который можно использовать для правильного вставки данных в результаты.
  • matching: Является ли это ассоциацией, загруженной через matching().

Parameters

Cake\ORM\Table $table

Таблица, содержащая ассоциацию, которая будет нормализована

Returns

array

attachAssociations() public

attachAssociations(Cake\ORM\Query $query, Cake\ORM\Table $repository, bool $includeFields): void

Модифицирует переданный запрос, чтобы применить соединения или любые другие преобразования, необходимые для загрузки ассоциаций, описанных в массиве contain. Этот метод не будет изменять запрос для загрузки внешних ассоциаций, то есть тех, которые не могут быть загружены без выполнения отдельного запроса.

Parameters

Cake\ORM\Query $query

Запрос, который нужно изменить

Cake\ORM\Table $repository

Репозиторий, содержащий ассоциации

bool $includeFields

необходимо ли добавить все поля из ассоциаций в переданный запрос. Это может быть переопределено в соответствии с настройками, определенными для каждой ассоциации в массиве включений

Returns

void

attachableAssociations() public

attachableAssociations(Cake\ORM\Table $repository): arrayCake\ORM\EagerLoadable>

Возвращает массив с ассоциациями, которые можно получить с помощью одного запроса, ключи массива — это псевдонимы ассоциаций, а значения будут содержать массив с объектами Cake\ORM\EagerLoadable.

Parameters

Cake\ORM\Table $repository

Таблица, содержащая ассоциации для прикрепления

Returns

arrayCake\ORM\EagerLoadable>

clearContain() public

clearContain(): void

Удалить любые существующие включения, не основанные на соответствии.

Это сбросит/очистит любые включенные ассоциации, которые не были добавлены с помощью matching().

Returns

void

contain() public

contain(array|string $associations, callable|null $queryBuilder = null): array

Задает список ассоциаций, которые должны быть нетерпеливо загружены для конкретной таблицы при предоставлении запроса. Список связанных таблиц, переданных этому методу, должен быть предварительно установлен в качестве ассоциаций с помощью API таблицы.

Ассоциации могут быть произвольно вложенными с использованием точечной нотации или вложенных массивов, это позволяет этому объекту вычислять соединения или любые дополнительные запросы, которые должны быть выполнены для получения необходимых связанных данных.

Допустимые параметры для каждой переданной ассоциации:

  • foreignKey: используется для установки другого поля для соответствия обеим таблицам, если установлено значение false, условия соединения не будут генерироваться автоматически
  • fields: массив с полями, которые должны быть получены из ассоциации
  • queryBuilder: эквивалент передаче вызываемого объекта вместо массива параметров
  • matching: указывать ли классу ассоциации, что он должен фильтровать основной запрос по результатам, полученным этим классом.
  • joinType: для ассоциаций, которые можно соединить, тип соединения SQL, который нужно использовать.
  • strategy: стратегия загрузки, которую нужно использовать (join, select, subquery)

Parameters

array|string $associations

список псевдонимов таблиц, которые необходимо запрашивать. Когда этот метод вызывается несколько раз, он объединяет предыдущий список с новым.

callable|null $queryBuilder optional

Вызываемый объект построителя запросов

Returns

array

Throws

InvalidArgumentException
При использовании $queryBuilder с массивом $associations

disableAutoFields() public

disableAutoFields(): $this

Отключить автоматическую загрузку полей содержащихся ассоциаций.

Returns

$this

enableAutoFields() public

enableAutoFields(bool $enable = true): $this

Задает, будут ли содержащиеся ассоциации автоматически загружать поля.

Parameters

bool $enable optional

Значение для установки.

Returns

$this

externalAssociations() public

externalAssociations(Cake\ORM\Table $repository): arrayCake\ORM\EagerLoadable>

Возвращает массив с ассоциациями, которые необходимо получить с помощью отдельного запроса, каждое значение массива будет содержать объект {@link \Cake\ORM\EagerLoadable}.

Parameters

Cake\ORM\Table $repository

Таблица, содержащая ассоциации, которые необходимо загрузить

Returns

arrayCake\ORM\EagerLoadable>

getContain() public

getContain(): array

Получает список ассоциаций, которые должны быть нетерпеливо загружены для конкретной таблицы при предоставлении запроса. Список связанных таблиц, переданных этому методу, должен быть предварительно установлен в качестве ассоциаций с помощью API таблицы.

Returns

array

getMatching() public

getMatching(): array

Возвращает текущее дерево ассоциаций для сопоставления.

Returns

array

isAutoFieldsEnabled() public

isAutoFieldsEnabled(): bool

Получает, будут ли содержащиеся ассоциации автоматически загружать поля.

Returns

bool

loadExternal() public

loadExternal(Cake\ORM\Query $query, Cake\Database\StatementInterface $statement): Cake\Database\StatementInterface

Декорирует переданный объект инструкции, чтобы вставить данные из ассоциаций, которые не могут быть напрямую объединены.

Parameters

Cake\ORM\Query $query

Запрос, для которого необходимо нетерпеливо загрузить внешние ассоциации

Cake\Database\StatementInterface $statement

Инструкция, созданная после выполнения $query

Returns

Cake\Database\StatementInterface

Throws

RuntimeException

normalized() public

normalized(Cake\ORM\Table $repository): array

Возвращает полностью нормализованный массив ассоциаций, которые должны быть нетерпеливо загружены для таблицы. Нормализованный массив перестроит исходный массив, сортируя все ассоциации под одним ключом, а специальные параметры - под другим.

Каждый из уровней дерева ассоциаций будет преобразован в объект {@link \Cake\ORM\EagerLoadable}, который содержит всю информацию, необходимую для объектов ассоциации для загрузки информации из базы данных.

Кроме того, он установит ключ «экземпляр» для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей исходной таблицы

Parameters

Cake\ORM\Table $repository

Таблица, содержащая ассоциацию, которая будет нормализована

Returns

array

setMatching() public

setMatching(string $associationPath, callable|null $builder = null, array<string, mixed> $options = []): $this

Добавляет новую ассоциацию в список, который будет использоваться для фильтрации результатов любого заданного запроса на основе результатов поиска записей для этой ассоциации. Вы можете передать путь ассоциаций, разделенный точками, этому методу в качестве его первого параметра, это приведет к установке всех этих ассоциаций с параметром matching.

Options

  • joinType: INNER, OUTER, ...
    • fields: Поля для включения
    • negateMatch: Необходимо ли добавить условия, чтобы отрицать соответствие целевой ассоциации

Parameters

string $associationPath

Путь ассоциации, разделенный точками, 'Name1.Name2.Name3'

callable|null $builder optional

Функция обратного вызова, которая будет использоваться для установки дополнительных параметров для запроса фильтрации

array<string, mixed> $options optional

Дополнительные параметры для сопоставления ассоциаций.

Returns

$this

Краткое описание полей

$_aliasList protected

Содержит список имен ассоциаций, которые должны быть нетерпеливо загружены

Type

array

$_autoFields protected

Управляет тем, будут ли поля из связанных таблиц нетерпеливо загружены. Если установлено значение false, поля из ассоциаций загружаться не будут.

Type

bool

$_containOptions protected

Список параметров, принимаемых ассоциациями в contain(), индексированных по ключу для более быстрого доступа

Type

array<string, int>

$_containments protected

Вложенный массив, описывающий ассоциацию, которая должна быть получена, и параметры, которые необходимо применить для каждой из них, если таковые имеются

Type

array<string, mixed>

$_joinsMap protected

Карта псевдонимов таблиц, указывающая на объекты ассоциации, которые они представляют для запроса.

Type

array

$_loadExternal protected

Список ассоциаций, которые должны быть загружены с помощью отдельного запроса

Type

arrayCake\ORM\EagerLoadable>

$_matching protected

Другой экземпляр EagerLoader, который будет использоваться для ассоциаций «сопоставления».

Type

Cake\ORM\EagerLoader|null

$_normalized protected

Содержит вложенный массив с скомпилированным деревом содержащихся элементов. Это нормализованная версия массива содержащихся элементов, предоставленного пользователем.

Type

Cake\ORM\EagerLoadable|arrayCake\ORM\EagerLoadable>|null

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.3/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API