Класс 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
Возвращает массив, ключами которого является точечный путь ассоциаций, участвующих в этом жадном загрузчике. Значения массива будут содержать следующие ключи
- 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 )
Форматирует массив содержаний таким образом, чтобы ассоциации всегда устанавливались в качестве ключей в массиве. Эта функция объединяет исходный массив ассоциаций с новыми предоставленными ассоциациями
Параметры
- массив
$associations - массив содержаний, предоставленный пользователем
- массив
$original Исходный массив содержаний для объединения с новым
Возвращает
массив_resolveJoins()source protected
_resolveJoins( array $associations , array $matching [] )
Вспомогательная функция, используемая для составления списка всех ассоциаций, которые могут быть объединены в запросе.
Параметры
- массив
$associations - список ассоциаций, из которых необходимо получить объединения.
- массив
$matchingопционально [] - список ассоциаций, которые необходимо принудительно объединить.
Возвращает
массивaddToJoinsMap()source public
addToJoinsMap( string $alias , Cake\ORM\Association $assoc , boolean $asMatching false )
Регистрирует псевдоним таблицы, обычно загружаемый как объединение в запросе, как принадлежащий к ассоциации. Это помогает хидраторам понять, что делать со столбцами, поступающими из такой объединенной таблицы.
Параметры
- строка
$alias - псевдоним таблицы, как он отображается в запросе.
-
Cake\ORM\Association$assoc Объект ассоциации, который представляет собой псевдоним; будет нормализован
- логическое значение
$asMatchingопционально false Указывает, следует ли рассматривать это объединение как ассоциацию 'сопоставления'.
associationsMap()source public
associationsMap( Cake\ORM\Table $table )
Возвращает массив, имеющий в качестве ключей точечный путь ассоциаций, участвующих в этом загрузчике eager. Значения массива будут содержать следующие ключи
- 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 [] )
Устанавливает список ассоциаций, которые должны быть загружены с помощью eager load для определенной таблицы, когда предоставляется запрос. Список связанных таблиц, переданных в этот метод, должен был быть ранее установлен как ассоциации с помощью API таблиц.
Ассоциации можно произвольно вложены с помощью точечной нотации или вложенных массивов, это позволяет этому объекту рассчитывать объединения или любые дополнительные запросы, которые необходимо выполнить, чтобы получить необходимые связанные данные.
Допустимые параметры для каждой переданной ассоциации:
- foreignKey: Используется для установки другого поля для сопоставления обеих таблиц. Если установлено в false, условия объединения не будут автоматически сгенерированы.
- fields: Массив с полями, которые должны быть получены из ассоциации
- queryBuilder: Эквивалентно передаче вызываемого объекта вместо массива опций
- matching: Уведомляет класс ассоциации о том, что он должен отфильтровать основной запрос по результатам, полученным этим классом.
- joinType: Для объединяемых ассоциаций — тип SQL-объединения, который следует использовать.
- strategy: Стратегия загрузки (join, select, subquery)
Параметры
- массив|строка
$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 Запрос, для которого необходимо загрузить внешние ассоциации
-
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 )
Возвращает полностью нормализованный массив ассоциаций, которые должны быть загружены с помощью eager loading для таблицы. Нормализованный массив перестроит исходный массив, отсортировав все ассоциации под одним ключом и специальные параметры под другим.
Каждый уровень дерева ассоциаций преобразуется в объект Cake\ORM\EagerLoadable, содержащий всю необходимую информацию для объектов ассоциации, чтобы загрузить информацию из базы данных.
Кроме того, он установит ключ 'instance' для каждой ассоциации, содержащий экземпляр ассоциации из соответствующей таблицы источника
Параметры
-
Cake\ORM\Table$repository Таблица, содержащая ассоциацию, которая будет нормализована
Возвращает
arrayПодробное описание свойств
$_aliasListsource
protected array
Содержит список имен ассоциаций, которые должны быть загружены с помощью eager loading
[]
$_autoFieldssource
protected boolean
Управляет тем, будут ли загружены поля из связанных таблиц с помощью eager loading. Если установлено в 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–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.2/class-Cake.ORM.EagerLoader.html