Класс EagerLoader
Предоставляет методы для хранения ассоциаций, которые должны быть загружены с жадностью для таблицы после предоставления запроса и делегирует задачу создания необходимых объединений и оформления результатов, чтобы эти ассоциации могли быть частью набора результатов.
Краткое описание свойств
- $_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.
Подробное описание методов
__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 Имя свойства, где результаты объединения должны быть вложены. Если не указано, будет использовано стандартное свойство для ассоциации.
Возвращает
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 включать ли все поля из ассоциаций в переданный запрос. Это может быть переопределено в соответствии с настройками, определенными для каждой ассоциации в массиве содержаний
Возвращает
voidattachableAssociations() public
attachableAssociations(Cake\ORM\Table $repository): arrayCake\ORM\EagerLoadable>
Возвращает массив с ассоциациями, которые можно получить с помощью одного запроса. Ключами массива являются псевдонимы ассоциаций, а значениями — массив объектов Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциации, которые нужно добавить
Возвращает
arrayCake\ORM\EagerLoadable>clearContain() public
clearContain(): void
Удаляет все существующие содержащие ассоциации, не соответствующие критериям.
Это сбросит/очистит любые содержащие ассоциации, которые не были добавлены с помощью matching().
Возвращает
voidcontain() 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
Отключает автоматическую загрузку полей содержащихся ассоциаций.
Возвращает
$thisenableAutoFields() public
enableAutoFields(bool $enable = true): $this
Устанавливает, будут ли автоматически загружаться поля содержащихся ассоциаций.
Параметры
-
bool$enable optional Значение для установки.
Возвращает
$thisexternalAssociations() 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 таблиц.
Возвращает
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
Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены для таблицы. Нормализованный массив перестроит исходный массив, отсортировав все ассоциации под одним ключом и специальные параметры под другим.
Каждый уровень дерева ассоциаций будет преобразован в объект {@link \Cake\ORM\EagerLoadable}, который содержит всю необходимую информацию для объектов ассоциаций, чтобы загружать информацию из базы данных.
Кроме того, он установит ключ 'instance' для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей исходной таблицы
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arraysetMatching() 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