Класс EagerLoader
Предоставляет методы для хранения ассоциаций, которые должны быть загружены с жадностью для таблицы после предоставления запроса, и делегирует задачу создания необходимых соединений и форматирования результатов, чтобы эти ассоциации могли быть частью набора результатов.
Подробное описание методов
_collectKeyssource protected
_collectKeys( array $external , Cake\ORM\Query $query , Cake\Database\Statement\BufferedStatement $statement )
Вспомогательная функция, используемая для возврата ключей из записей запроса, которые будут использоваться для жадной загрузки ассоциаций.
Параметры
- массив
$external - список внешних ассоциаций, которые должны быть загружены
-
Cake\ORM\Query$query - Запрос, из результатов которого были сгенерированы данные
-
Cake\Database\Statement\BufferedStatement$statement - Запрос для обработки
Возвращает
arrayмассив
_correctStrategysource protected
_correctStrategy( Cake\ORM\EagerLoadable $loadable )
Изменяет стратегию извлечения ассоциаций при необходимости из-за дублирования под одними и теми же прямыми цепочками ассоциаций.
Параметры
- Cake\ORM\EagerLoadable
$loadable - Настройка ассоциации
_fixStrategiessource protected
_fixStrategies( )
Итерирует список псевдонимов, допускающих объединение, и исправляет стратегии извлечения, чтобы избежать столкновений псевдонимов в сгенерированных запросах.
Эта функция работает со ссылками на массивы, сгенерированные функцией _normalizeContain().
_groupKeyssource protected
_groupKeys( Cake\Database\StatementInterface $statement , array $collectKeys )
Вспомогательная функция, используемая для итерации запроса и извлечения столбцов, определенных в $collectKeys.
Параметры
-
Cake\Database\StatementInterface$statement - Запрос для чтения.
- массив
$collectKeys - Ключи для сбора
Возвращает
arrayмассив
_normalizeContainsource protected
_normalizeContain( Cake\ORM\Table $parent , string $alias , array $options , array $paths )
Вспомогательная функция, отвечающая за полную нормализацию глубоких ассоциаций, определенных с помощью contain().
Параметры
-
Cake\ORM\Table$parent - сторона владения ассоциации
- строка
$alias - имя ассоциации для загрузки
- массив
$options - список дополнительных опций для использования с этой ассоциацией
- массив
$paths - массив с двумя значениями: первый - список строк с точками, представляющих ассоциации, ведущие к этому
$aliasв цепочке ассоциаций для загрузки. Второе значение - путь для следования в свойствах сущностей для получения записи соответствующей ассоциации.
Возвращает
arrayнормализованные ассоциации
Выбрасывает
InvalidArgumentExceptionЕсли указаны ассоциации, которые не существуют
_reformatContainsource protected
_reformatContain( array $associations , array $original )
Форматирует массив containments таким образом, что ассоциации всегда устанавливаются в качестве ключей в массиве. Эта функция объединяет исходный массив ассоциаций с новыми предоставленными ассоциациями.
Параметры
- массив
$associations - массив содержаний, предоставленный пользователем
- массив
$original - исходный массив containments для объединения с новым
Возвращает
arrayмассив
_resolveJoinssource protected
_resolveJoins( array $associations , array $matching [] )
Вспомогательная функция, используемая для составления списка всех ассоциаций, которые могут быть объединены в запросе.
Параметры
- массив
$associations - список ассоциаций, из которых нужно получить объединения.
- массив
$matchingoptional [] - список ассоциаций, которые должны быть принудительно объединены.
Возвращает
arrayмассив
addToJoinsMapsource public
addToJoinsMap( string $alias , Cake\ORM\Association $assoc , boolean $asMatching false )
Регистрирует псевдоним таблицы, обычно загружаемый как объединение в запросе, как принадлежащий ассоциации. Это помогает хидраторам понять, что делать со столбцами, полученными из такой соединённой таблицы.
Параметры
- строка
$alias - Псевдоним таблицы, как он отображается в запросе.
-
Cake\ORM\Association$assoc - Объект ассоциации, который представляет псевдоним; будет нормализован
- булево
$asMatchingoptional false - Указывает, следует ли рассматривать результаты этого объединения как ассоциацию соответствия.
associationsMapsource public
associationsMap( Cake\ORM\Table $table )
Возвращает массив, ключи которого - пунктирные пути ассоциаций, участвующих в этом загрузчике с жадностью. Значения массива будут содержать следующие ключи:
- alias: Псевдоним ассоциации
- instance: Экземпляр ассоциации
- canBeJoined: Будет ли ассоциация загружена с помощью JOIN
- entityClass: Сущность, которая должна использоваться для гидратации результатов
- nestKey: Путь с точками, который можно использовать для правильной вставки данных в результаты.
- matching: Является ли это ассоциацией, загруженной с помощью
matching().
Параметры
-
Cake\ORM\Table$table - Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arrayмассив
attachAssociationssource public
attachAssociations( Cake\ORM\Query $query , Cake\ORM\Table $repository , boolean $includeFields )
Изменяет переданный запрос, чтобы применить объединения или любые другие преобразования, необходимые для жадной загрузки ассоциаций, описанных в массиве contain. Этот метод не будет изменять запрос для загрузки внешних ассоциаций, т. е. тех, которые не могут быть загружены без выполнения отдельного запроса.
Параметры
-
Cake\ORM\Query$query - Запрос, который нужно изменить
-
Cake\ORM\Table$repository - Репозиторий, содержащий ассоциации
- булево
$includeFields - присоединить ли все поля из ассоциаций к переданному запросу. Это можно переопределить в соответствии с настройками, определенными для каждой ассоциации в массиве содержаний
attachableAssociationssource public
attachableAssociations( Cake\ORM\Table $repository )
Возвращает массив с ассоциациями, которые могут быть получены с помощью одного запроса, ключи массива - псевдонимы ассоциаций, а значения содержат массив объектов Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository - Таблица, содержащая ассоциации для добавления
Возвращает
arrayмассив
autoFieldssource public
autoFields( boolean $value null )
Устанавливает, будут ли автоматически загружаться поля содержащихся ассоциаций.
Параметры
- булево
$valueoptional null - Значение для установки.
Возвращает
booleanТекущее значение.
clearContainsource public
clearContain( )
Удаляет любые существующие содержащиеся ассоциации, не основанные на соответствии.
Это сбросит/очистит любые содержащиеся ассоциации, которые не были добавлены с помощью matching().
containsource public
contain( array|string $associations [] )
Устанавливает список ассоциаций, которые должны быть загружены вместе с конкретной таблицей при использовании запроса. Список связанных таблиц, переданный в этот метод, должен быть предварительно задан как ассоциации с помощью API таблиц.
Ассоциации могут быть произвольно вложены с использованием точечной нотации или вложенных массивов. Это позволяет этому объекту рассчитывать соединения или любые дополнительные запросы, которые необходимо выполнить, чтобы получить требуемые связанные данные.
Допустимые параметры для каждой переданной ассоциации:
- foreignKey: используется для установки другого поля для сопоставления обеих таблиц. Если установлено в false, условия соединения не будут автоматически генерироваться
- fields: массив с полями, которые должны быть извлечены из ассоциации
- queryBuilder: эквивалентно передаче вызываемого объекта вместо массива опций
- matching: указывает, нужно ли классу ассоциации отфильтровать основной запрос результатами, полученными этим классом.
- joinType: для соединяемых ассоциаций - тип SQL-соединения, который нужно использовать.
- strategy: стратегия загрузки (соединение, выборка, подзапрос)
Параметры
- массив|строка
$associationsнеобязательно [] - список псевдонимов таблиц, которые должны быть запрошены. Когда этот метод вызывается несколько раз, он объединяет предыдущий список с новым.
Возвращает
arrayСодержания.
externalAssociationssource public
externalAssociations( Cake\ORM\Table $repository )
Возвращает массив ассоциаций, которые необходимо загрузить с помощью отдельного запроса. Каждый элемент массива содержит объект Cake\ORM\EagerLoadable.
Параметры
-
Cake\ORM\Table$repository - Таблица, содержащая ассоциации, которые необходимо загрузить
Возвращает
arrayмассив
loadExternalsource public
loadExternal( Cake\ORM\Query $query , Cake\Database\StatementInterface $statement )
Декорирует переданный объект оператора, чтобы вставить данные из ассоциаций, которые нельзя напрямую присоединить.
Параметры
-
Cake\ORM\Query$query - Запрос, для которого необходимо произвести жадную загрузку внешних ассоциаций
-
Cake\Database\StatementInterface$statement - Оператор, созданный после выполнения запроса $query
Возвращает
Cake\Database\Statement\CallbackStatementизменённый оператор со дополнительными загрузчиками
matchingsource public
matching( string|null $assoc null , callable $builder null , array $options [] )
Добавляет новую ассоциацию в список, который будет использоваться для фильтрации результатов любого запроса на основе результатов поиска записей для этой ассоциации. В качестве первого параметра вы можете передать путь к ассоциациям, разделенный точкой. Это приведет к установке всех этих ассоциаций с опцией matching.
Если вызов не содержит аргументов, он вернёт текущее дерево ассоциаций, которые нужно сопоставить.
Параметры
- строка|null
$assocнеобязательно null - Одна ассоциация или путь к ассоциациям, разделённый точкой.
- вызываемый объект
$builderнеобязательно null - функция обратного вызова, которая будет использоваться для установки дополнительных параметров в запрос фильтрации
- массив
$optionsнеобязательно [] - Дополнительные параметры для сопоставления ассоциаций, такие как 'joinType' и 'fields'
Возвращает
arrayРезультирующий массив containments
normalizedsource public
normalized( Cake\ORM\Table $repository )
Возвращает полностью нормализованный массив ассоциаций, которые должны быть жадно загружены для таблицы. Нормализованный массив перестроит исходный массив, расположив все ассоциации под одним ключом, а специальные параметры под другим.
Каждый уровень дерева ассоциаций будет преобразован в объект Cake\ORM\EagerLoadable, который содержит всю необходимую информацию для объектов ассоциаций, чтобы загрузить информацию из базы данных.
Кроме того, он установит ключ 'instance' для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей исходной таблицы.
Параметры
-
Cake\ORM\Table$repository - Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arrayмассив
Краткое описание свойств
© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.ORM.EagerLoader.html