Класс EagerLoader
Предоставляет методы для хранения ассоциаций, которые должны быть загружены с жадностью для таблицы после предоставления запроса и делегирует задачу создания необходимых соединений и оформления результатов, чтобы эти ассоциации могли быть частью набора результатов.
Краткое описание свойств
- $_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 Имя свойства, в котором результаты объединения должны быть вложены. Если не указано, будет использоваться свойство по умолчанию для ассоциации.
Возвращает
voidassociationsMap() public
associationsMap(Cake\ORM\Table $table): array
Возвращает массив, в ключах которого находится путь ассоциаций через точку, участвующих в этом жадном загрузчике. Значения массива будут содержать следующие ключи:
- alias: Псевдоним ассоциации
- instance: Экземпляр ассоциации
- canBeJoined: Будет ли ассоциация загружаться с помощью JOIN
- entityClass: Сущность, которая должна использоваться для гидрации результатов
- nestKey: Путь через точку, который можно использовать для правильной вставки данных в результаты.
- matching: Является ли это ассоциацией, загруженной через
matching().
Параметры
-
Cake\ORM\Table$table Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arrayattachAssociations() 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
Возвращает
voidattachableAssociations() 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().
Возвращает
voidcontain() 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
Отключает автоматическую загрузку полей содержащихся ассоциаций.
Возвращает
$thisenableAutoFields() public
enableAutoFields(bool $enable = true): $this
Устанавливает, будут ли автоматически загружаться поля содержащихся ассоциаций.
Параметры
-
bool$enable optional Значение для установки.
Возвращает
$thisexternalAssociations() public
externalAssociations(Cake\ORM\Table $repository): Cake\ORM\EagerLoadable[]
Возвращает массив ассоциаций, которые нужно извлекать с помощью отдельного запроса. Каждое значение массива будет содержать объект Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциации, которые нужно загрузить
Возвращает
Cake\ORM\EagerLoadable[]getContain() public
getContain(): array
Получает список ассоциаций, которые должны быть загружены вместе с определённой таблицей при выполнении запроса. Список связанных таблиц, переданный в этот метод, должен быть предварительно задан как ассоциации с помощью API таблиц.
Возвращает
arraygetMatching() public
getMatching(): array
Возвращает текущее дерево ассоциаций для сопоставления.
Возвращает
arrayisAutoFieldsEnabled() public
isAutoFieldsEnabled(): bool
Получает, будут ли автоматически загружаться поля содержащихся ассоциаций.
Возвращает
boolloadExternal() 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Исключения
RuntimeExceptionnormalized() public
normalized(Cake\ORM\Table $repository): array
Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены вместе с таблицей. Нормализованный массив перестроит исходный массив, отсортировав все ассоциации под один ключ и специальные параметры под другой.
Каждый уровень дерева ассоциаций преобразуется в объект Cake\ORM\EagerLoadable, содержащий всю необходимую информацию для загрузки данных из базы данных.
Кроме того, он установит ключ 'instance' для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей исходной таблицы.
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arraysetMatching() 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