Класс EagerLoader
Предоставляет методы для хранения ассоциаций, которые должны быть загружены жадно для таблицы после предоставления запроса и делегирует задачу создания необходимых соединений и форматирования результатов, чтобы эти ассоциации могли быть частью набора результатов.
Краткое описание свойств
-
$_aliasListprotectedСодержит список имен ассоциаций, которые должны быть загружены жадноarray -
$_autoFieldsprotectedbooleanУправляет тем, будут ли поля из связанных таблиц загружаться жадно. Если установлено в false, поля из ассоциаций не будут загружены.
-
$_containOptionsprotectedarrayСписок опций, принимаемых ассоциациями в индексе contain(), для более быстрого доступа
-
$_containmentsprotectedarrayВложенный массив, описывающий ассоциацию, которая должна быть получена, и опции, которые следует применить к каждой из них, если таковые имеются
-
$_joinsMapprotectedarrayКарта псевдонимов таблиц, указывающих на объекты ассоциаций, которые они представляют для запроса.
-
$_loadExternalprotectedСписок ассоциаций, которые должны быть загружены с помощью отдельного запросаarray - Другой экземпляр EagerLoader, который будет использоваться для ассоциаций «сопоставления».
$_matchingprotected -
$_normalizedprotectedarrayСодержит вложенный массив с скомпилированным деревом содержаний. Это нормализованная версия массива содержаний, предоставленного пользователем.
Краткое описание методов
- _collectKeys() protected
Вспомогательная функция, используемая для возвращения ключей из записей запроса, которые будут использоваться для жадной загрузки ассоциаций.
- _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.
- autoFields() publicУстанавливает, будут ли автоматически загружаться поля содержащихся ассоциаций.
- clearContain() publicУдаляет любые существующие содержащиеся элементы, не соответствующие критериям.
- contain() public
Устанавливает список ассоциаций, которые должны быть загружены жадно вместе с определенной таблицей, когда предоставляется запрос. Список связанных таблиц, переданных в этот метод, должен был быть ранее задан как ассоциации с помощью API таблиц.
- externalAssociations() public
Возвращает массив с ассоциациями, которые необходимо получить с помощью отдельного запроса; каждое значение массива будет содержать объект Cake\ORM\EagerLoadable.
- loadExternal() public
Форматирует переданный объект оператора, чтобы добавить данные из ассоциаций, которые нельзя непосредственно объединить.
- matching() public
Добавляет новую ассоциацию в список, который будет использоваться для фильтрации результатов любого заданного запроса на основе результатов поиска записей для этой ассоциации. Вы можете передать точечный путь ассоциаций в этот метод в качестве первого параметра, это приведет к установке всех этих ассоциаций с опцией
matching. - normalized() public
Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены жадно для таблицы. Нормализованный массив перестроит исходный массив, отсортировав все ассоциации под одним ключом и специальные опции под другим.
Подробное описание методов
_collectKeys()source protected
_collectKeys( array $external , Cake\ORM\Query $query , Cake\Database\Statement\BufferedStatement $statement )
Вспомогательная функция, используемая для возвращения ключей из записей запроса, которые будут использоваться для жадной загрузки ассоциаций.
Параметры
- массив
$external - список внешних ассоциаций, которые должны быть загружены
-
Cake\ORM\Query$query - запрос, из которого были сгенерированы результаты
-
Cake\Database\Statement\BufferedStatement$statement - оператор, с которым нужно работать
Возвращает
массив_correctStrategy()source protected
_correctStrategy( Cake\ORM\EagerLoadable $loadable )
Изменяет стратегию получения ассоциации при необходимости из-за дублирования в том же прямом цепочке ассоциаций
Параметры
- Cake\ORM\EagerLoadable
$loadable - конфигурация ассоциации
_fixStrategies()source protected
_fixStrategies( )
Итерируется по списку псевдонимов, подлежащих объединению, и исправляет стратегии получения, чтобы избежать коллизий псевдонимов в сгенерированных запросах.
Эта функция работает со ссылками на массивы, сгенерированные функцией _normalizeContain().
_groupKeys()source protected
_groupKeys( Cake\Database\StatementInterface $statement , array $collectKeys )
Вспомогательная функция, используемая для итерации по оператору и извлечения столбцов, определенных в $collectKeys
Параметры
-
Cake\Database\StatementInterface$statement - оператор для чтения
- массив
$collectKeys - ключи для сбора
Возвращает
массив_normalizeContain()source protected
_normalizeContain( Cake\ORM\Table $parent , string $alias , array $options , array $paths )
Вспомогательная функция, отвечающая за полную нормализацию глубоких ассоциаций, определённых с использованием contain()
Параметры
-
Cake\ORM\Table$parent - сторона ассоциации
- строка
$alias - имя ассоциации, которая должна быть загружена
- массив
$options - список дополнительных опций для этой ассоциации
- массив
$paths Массив из двух элементов: первый — список строк, разделённых точками, представляющих ассоциации, ведущие к этой
$aliasв цепочке ассоциаций, которые должны быть загружены. Второй элемент — путь к свойствам сущностей для извлечения записи соответствующей ассоциации.
Возвращает
массивнормализованные ассоциации
Выбрасывает
InvalidArgumentExceptionКогда связи ссылаются на несуществующие ассоциации.
_reformatContain()source protected
_reformatContain( array $associations , array $original )
Форматирует массив containments таким образом, что ассоциации всегда задаются в качестве ключей в массиве. Эта функция объединяет исходный массив ассоциаций с новыми предоставленными ассоциациями.
Параметры
- массив
$associations - предоставленный пользователем массив containments
- массив
$original Исходный массив containments для объединения с новым
Возвращает
массив_resolveJoins()source protected
_resolveJoins( array $associations , array $matching [] )
Вспомогательная функция для составления списка всех ассоциаций, которые могут быть объединены в запросе.
Параметры
- массив
$associations - список ассоциаций, из которых нужно получить объединения.
- массив
$matchingнеобязательно [] - список ассоциаций, которые должны быть принудительно объединены.
Возвращает
массивaddToJoinsMap()source public
addToJoinsMap( string $alias , Cake\ORM\Association $assoc , boolean $asMatching false , string $targetProperty null )
Регистрирует псевдоним таблицы, обычно загружаемый как объединение в запросе, как принадлежащий к ассоциации. Это помогает хидраторам понимать, что делать со столбцами, поступающими из такой соединённой таблицы.
Параметры
- строка
$alias - Псевдоним таблицы, как он отображается в запросе.
-
Cake\ORM\Association$assoc Объект ассоциации, который представляет псевдоним; будет нормализован
- булево
$asMatchingнеобязательно false Указывает, следует ли обрабатывать результаты этого объединения как ассоциацию «соответствия».
- строка
$targetPropertyнеобязательно null Имя свойства, где результаты объединения должны быть вложены. Если не указано, будет использовано стандартное свойство ассоциации.
associationsMap()source public
associationsMap( Cake\ORM\Table $table )
Возвращает массив, ключи которого — путь с точками ассоциаций, участвующих в этом eager loader. Значения массива будут содержать следующие ключи:
- alias: Псевдоним ассоциации
- instance: Экземпляр ассоциации
- canBeJoined: Будет ли ассоциация загружена с помощью JOIN
- entityClass: Сущность, которая должна использоваться для гидрации результатов
- nestKey: Путь с точками, который можно использовать для корректной вставки данных в результаты.
- matching: Является ли это ассоциацией, загруженной с помощью
matching()
Параметры
-
Cake\ORM\Table$table Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
массивattachAssociations()source public
attachAssociations( Cake\ORM\Query $query , Cake\ORM\Table $repository , boolean $includeFields )
Модифицирует переданный запрос, чтобы применить объединения или другие преобразования, необходимые для eager загрузки ассоциаций, описанных в массиве contain. Этот метод не будет модифицировать запрос для загрузки внешних ассоциаций, т.е. тех, которые не могут быть загружены без выполнения отдельного запроса.
Параметры
-
Cake\ORM\Query$query - Запрос, который будет изменён
-
Cake\ORM\Table$repository - Репозиторий, содержащий ассоциации
- булево
$includeFields должны ли быть добавлены все поля из ассоциаций в переданный запрос. Это можно переопределить в соответствии с настройками, определёнными для каждой ассоциации в массиве containments
attachableAssociations()source public
attachableAssociations( Cake\ORM\Table $repository )
Возвращает массив с ассоциациями, которые могут быть извлечены одним запросом. Ключи массива — псевдонимы ассоциаций, а значения — массив объектов Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциации, которые должны быть добавлены
Возвращает
массивautoFields()source public
autoFields( boolean|null $value null )
Устанавливает, будут ли автоматически загружаться поля связанных ассоциаций.
Параметры
- булево|null
$valueнеобязательно null - Значение для установки.
Возвращает
булевоТекущее значение.
clearContain()source public
clearContain( )
Удаляет все существующие ассоциации, не соответствующие критериям.
Сбросит/очистит любые ассоциации, которые не были добавлены с помощью matching().
contain()source public
contain( array|string $associations [] )
Устанавливает список ассоциаций, которые должны быть загружены вместе с определённой таблицей при предоставлении запроса. Список связанных таблиц, переданных в этот метод, должен был быть ранее установлен как ассоциации с помощью API таблицы.
Ассоциации могут быть произвольно вложены с использованием нотации точек или вложенных массивов, что позволяет этому объекту рассчитывать объединения или дополнительные запросы, которые необходимо выполнить, чтобы получить необходимые данные ассоциаций.
Допустимые опции для каждой переданной ассоциации:
- foreignKey: Используется для установки другого поля для сопоставления обеих таблиц. Если установлено в false, автоматически не будут генерироваться условия объединения
- fields: Массив с полями, которые должны быть извлечены из ассоциации
- queryBuilder: Эквивалентно передаче вызываемого объекта вместо массива опций
- matching: Указывает классу ассоциации, что он должен отфильтровать основной запрос результатами, полученными этим классом.
- joinType: Для объединяемых ассоциаций тип SQL-объединения, который следует использовать.
- strategy: Стратегия загрузки (объединение, выборка, подзапрос)
Параметры
- массив|строка
$associationsнеобязательно [] список псевдонимов таблиц для запроса. При вызове этого метода несколько раз предыдущий список будет объединён с новым.
Возвращает
массивКонтейнеры
externalAssociations()source public
externalAssociations( Cake\ORM\Table $repository )
Возвращает массив с ассоциациями, которые нужно получить с помощью отдельного запроса. Каждый элемент массива будет содержать объект Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциации, которые нужно загрузить
Возвращает
массивloadExternal()source public
loadExternal( Cake\ORM\Query $query , Cake\Database\StatementInterface $statement )
Декорирует переданный объект оператора, чтобы вставить данные из ассоциаций, которые нельзя непосредственно объединить.
Параметры
-
Cake\ORM\Query$query Запрос, для которого нужно eager загрузить внешние ассоциации
-
Cake\Database\StatementInterface$statement - Оператор, созданный после выполнения $query
Возвращает
Cake\Database\Statement\CallbackStatementизменённый оператор, с дополнительными загрузчиками
matching()source public
matching( string|null $assoc null , callable $builder null , array $options [] )
Добавляет новую ассоциацию в список, который будет использоваться для фильтрации результатов любого запроса на основе результатов поиска записей для этой ассоциации. Вы можете передать путь с точкой, отделяющей ассоциации, в этот метод в качестве первого параметра, это приведет к настройке всех этих ассоциаций с параметром matching.
Если вызвана без аргументов, она вернёт текущее дерево ассоциаций для сопоставления.
Параметры
- string|null
$assocнеобязательно null - Одна ассоциация или путь с точкой, отделяющей ассоциации.
- callable
$builderнеобязательно null функция обратного вызова, используемая для установки дополнительных параметров в запрос фильтрации
- array
$optionsнеобязательно [] Дополнительные параметры для сопоставления ассоциаций, такие как 'joinType' и 'fields'
Возвращает
arrayРезультат массива сопоставлений
normalized()source public
normalized( Cake\ORM\Table $repository )
Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены для таблицы. Нормализованный массив перестроит исходный массив, отсортировав все ассоциации под одним ключом и дополнительные параметры под другим.
Каждый уровень дерева ассоциаций будет преобразован в объект Cake\ORM\EagerLoadable, содержащий всю информацию, необходимую для объектов ассоциаций, чтобы загрузить информацию из базы данных.
Кроме того, он установит ключ 'instance' для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей исходной таблицы
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arrayПодробное описание свойств
$_aliasListsource
protected array
Содержит список имён ассоциаций, которые должны быть загружены с немедленным выполнением
[]
$_autoFieldssource
protected boolean
Управляет тем, загружаются ли поля из связанных таблиц с немедленным выполнением. Если установлено в false, поля из ассоциаций не будут загружаться.
true
$_containOptionssource
protected array
Список параметров, принимаемых ассоциациями в contain(), индексированных по ключу для более быстрого доступа
[
'associations' => 1,
'foreignKey' => 1,
'conditions' => 1,
'fields' => 1,
'sort' => 1,
'matching' => 1,
'queryBuilder' => 1,
'finder' => 1,
'joinType' => 1,
'strategy' => 1,
'negateMatch' => 1
] $_containmentssource
protected array
Вложенный массив, описывающий ассоциацию для извлечения и параметры для применения к каждой из них, если таковые имеются
[]
$_joinsMapsource
protected array
Карта псевдонимов таблиц, указывающая на объекты ассоциаций, которые они представляют для запроса.
[]
$_loadExternalsource
protected array
Список ассоциаций, которые должны быть загружены с помощью отдельного запроса
[]
$_matchingsource
protected Cake\ORM\EagerLoader
Другой экземпляр EagerLoader, который будет использоваться для ассоциаций 'matching'.
$_normalizedsource
protected array
Содержит вложенный массив с скомпилированным деревом сопоставлений. Это нормализованная версия массива сопоставлений, предоставленного пользователем.
© 2005–2017 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/3.3/class-Cake.ORM.EagerLoader.html