Spec-Zone.ru › CakePHP 4.2

Класс EagerLoader

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

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

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

  • $_aliasList protected
    array

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

  • $_autoFields protected
    bool

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

  • $_containOptions protected
    array

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

  • $_containments protected
    array

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

  • $_joinsMap protected
    array

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

  • $_loadExternal protected
    Cake\ORM\EagerLoadable[]

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

  • $_matching protected
    Cake\ORM\EagerLoader|null

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

  • $_normalized protected
    Cake\ORM\EagerLoadable[]Cake\ORM\EagerLoadable|null

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

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

  • __clone() public

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

  • _buildAssociationsMap() protected

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

  • _collectKeys() protected

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

  • _correctStrategy() protected

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

  • _fixStrategies() protected

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

  • _groupKeys() protected

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

  • _normalizeContain() protected

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

  • _reformatContain() protected

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

  • _resolveJoins() protected

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

  • addToJoinsMap() public

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

  • associationsMap() public

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

  • attachAssociations() public

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

  • attachableAssociations() public

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

  • clearContain() public

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

  • contain() public

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

  • disableAutoFields() public

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

  • enableAutoFields() public

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

  • externalAssociations() public

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

  • getContain() public

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

  • getMatching() public

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

  • isAutoFieldsEnabled() public

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

  • loadExternal() public

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

  • normalized() public

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

  • setMatching() public

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

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

__clone() public

__clone(): void

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

Возвращает

void

_buildAssociationsMap() protected

_buildAssociationsMap(array $map, Cake\ORM\EagerLoadable[] $level, bool $matching = false): array

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

Параметры

array $map

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

Cake\ORM\EagerLoadable[] $level

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

bool $matching optional

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

Возвращает

array

_collectKeys() protected

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

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

Параметры

Cake\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 $collectKeys): array

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

Параметры

Cake\Database\Statement\BufferedStatement $statement

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

array $collectKeys

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

Возвращает

array

_normalizeContain() protected

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

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

Параметры

Cake\ORM\Table $parent

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

string $alias

Имя ассоциации, которую нужно загрузить.

array $options

Список дополнительных опций для этой ассоциации.

array $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(Cake\ORM\EagerLoadable[] $associations, Cake\ORM\EagerLoadable[] $matching = []): Cake\ORM\EagerLoadable[]

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

Параметры

Cake\ORM\EagerLoadable[] $associations

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

Cake\ORM\EagerLoadable[] $matching optional

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

Возвращает

Cake\ORM\EagerLoadable[]

addToJoinsMap() public

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

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

Параметры

string $alias

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

Cake\ORM\Association $assoc

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

bool $asMatching optional

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

string $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

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

Возвращает

void

attachableAssociations() public

attachableAssociations(Cake\ORM\Table $repository): Cake\ORM\EagerLoadable[]

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

Cake\ORM\EagerLoadable[]

clearContain() public

clearContain(): void

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

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

Возвращает

void

contain() public

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

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

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

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

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

Параметры

array|string $associations

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

callable|null $queryBuilder optional

Вызываемый объект query builder

Возвращает

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): Cake\ORM\EagerLoadable[]

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

Cake\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

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

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

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

array

setMatching() public

setMatching(string $assoc, callable|null $builder = null, array $options = []): $this

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

Параметры

  • 'joinType': INNER, OUTER, ...
    • 'fields': Поля для включения

Параметры

string $assoc

Одна ассоциация или путь с разделением точками ассоциаций.

callable|null $builder optional

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

array $options optional

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

Возвращает

$this

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

$_aliasList protected

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

Тип

array

$_autoFields protected

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

Тип

bool

$_containOptions protected

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

Тип

array

$_containments protected

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

Тип

array

$_joinsMap protected

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

Тип

array

$_loadExternal protected

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

Тип

Cake\ORM\EagerLoadable[]

$_matching protected

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

Тип

Cake\ORM\EagerLoader|null

$_normalized protected

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

Тип

Cake\ORM\EagerLoadable[]Cake\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.2/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

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