Spec-Zone.ru › CakePHP 4.4

Класс EagerLoader

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

Пространство имен: Cake\ORM

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

  • $_aliasList protected
    array

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

  • $_autoFields protected
    bool

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

  • $_containOptions protected
    array<string, int>

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

  • $_containments protected
    array<string, mixed>

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

  • $_joinsMap protected
    array<string,Cake\ORM\EagerLoadable>

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

  • $_loadExternal protected
    arrayCake\ORM\EagerLoadable>

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

  • $_matching protected
    Cake\ORM\EagerLoader|null

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

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

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

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

  • __clone() public

    Обрабатывает клонирование загрузчиков с жадностью и загружаемых с жадностью.

  • _buildAssociationsMap() protected

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

  • _collectKeys() protected

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

  • _correctStrategy() protected

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

  • _fixStrategies() protected

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

  • _groupKeys() protected

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

  • _normalizeContain() protected

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

  • _reformatContain() protected

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

  • _resolveJoins() protected

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

  • addToJoinsMap() public

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

  • associationsMap() public

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

  • attachAssociations() public

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

  • attachableAssociations() public

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

  • clearContain() public

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

  • contain() public

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

  • disableAutoFields() public

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

  • enableAutoFields() public

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

  • externalAssociations() public

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

  • getContain() public

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

  • getMatching() public

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

  • isAutoFieldsEnabled() public

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

  • loadExternal() public

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

  • normalized() public

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

  • setMatching() public

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

END_OF_DOCUMENT_MARKER

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

__clone() public

__clone(): void

Обрабатывает клонирование загружаемых с жадностью загрузчиков и загружаемых с жадностью.

Возвращает

void

_buildAssociationsMap() protected

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

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

Параметры

array $map

Исходный массив для карты.

arrayCake\ORM\EagerLoadable> $level

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

bool $matching optional

Указывает, загружается ли ассоциация через matching().

Возвращает

array

_collectKeys() protected

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

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

Параметры

arrayCake\ORM\EagerLoadable> $external

список внешних ассоциаций, которые нужно загрузить

Cake\ORM\Query $query

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

Cake\Database\StatementInterface $statement

Запрос для обработки

Возвращает

array

_correctStrategy() protected

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

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

Параметры

Cake\ORM\EagerLoadable $loadable

Настройка ассоциации

Возвращает

void

_fixStrategies() protected

_fixStrategies(): void

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

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

Возвращает

void

_groupKeys() protected

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

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

Параметры

Cake\Database\Statement\BufferedStatement $statement

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

array<string, array> $collectKeys

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

Возвращает

array

_normalizeContain() protected

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

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

Параметры

Cake\ORM\Table $parent

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

string $alias

имя ассоциации, подлежащей загрузке

array<string, mixed> $options

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

array<string, mixed> $paths

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

Возвращает

Cake\ORM\EagerLoadable

Исключения

InvalidArgumentException
При наличии содержаний, относящихся к несуществующим ассоциациям.

_reformatContain() protected

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

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

Параметры

array $associations

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

array $original

Исходный массив containments для объединения с новым

Возвращает

array

_resolveJoins() protected

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

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

Параметры

arrayCake\ORM\EagerLoadable> $associations

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

arrayCake\ORM\EagerLoadable> $matching optional

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

Возвращает

arrayCake\ORM\EagerLoadable>

addToJoinsMap() public

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

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

Параметры

string $alias

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

Cake\ORM\Association $assoc

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

bool $asMatching optional

Указывает, следует ли обрабатывать результаты этого объединения как ассоциацию 'matching'.

string|null $targetProperty optional

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

Возвращает

void

associationsMap() public

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

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

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

Параметры

Cake\ORM\Table $table

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

Возвращает

array

attachAssociations() public

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

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

Параметры

Cake\ORM\Query $query

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

Cake\ORM\Table $repository

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

bool $includeFields

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

Возвращает

void

attachableAssociations() public

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

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

arrayCake\ORM\EagerLoadable>

clearContain() public

clearContain(): void

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

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

Возвращает

void

contain() public

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

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

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

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

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

Параметры

array|string $associations

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

callable|null $queryBuilder optional

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

Возвращает

array

Исключения

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

disableAutoFields() public

disableAutoFields(): $this

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

Возвращает

$this

enableAutoFields() public

enableAutoFields(bool $enable = true): $this

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

Параметры

bool $enable optional

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

Возвращает

$this

externalAssociations() public

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

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

arrayCake\ORM\EagerLoadable>

getContain() public

getContain(): array

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

Возвращает

array

getMatching() public

getMatching(): array

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

Возвращает

array

isAutoFieldsEnabled() public

isAutoFieldsEnabled(): bool

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

Возвращает

bool

loadExternal() public

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

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

Параметры

Cake\ORM\Query $query

Запрос, для которого нужно произвести жадную загрузку внешних ассоциаций

Cake\Database\StatementInterface $statement

Оператор, созданный после выполнения запроса $query

Возвращает

Cake\Database\StatementInterface

Исключения

RuntimeException

normalized() public

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

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

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

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

array

setMatching() public

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

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

Параметры

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

Параметры

string $associationPath

Путь ассоциации, разделенный точками, 'Имя1.Имя2.Имя3'

callable|null $builder optional

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

array<string, mixed> $options optional

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

Возвращает

$this

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

$_aliasList protected

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

Тип

array

$_autoFields protected

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

Тип

bool

$_containOptions protected

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

Тип

array<string, int>

$_containments protected

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

Тип

array<string, mixed>

$_joinsMap protected

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

Тип

array<string,Cake\ORM\EagerLoadable>

$_loadExternal protected

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

Тип

arrayCake\ORM\EagerLoadable>

$_matching protected

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

Тип

Cake\ORM\EagerLoader|null

$_normalized protected

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

Тип

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.4/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

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