Spec-Zone.ru › CakePHP 3.2

Класс EagerLoader

Предоставляет методы для хранения ассоциаций, которые должны быть загружены с жадностью для таблицы после предоставления запроса, и делегирует задачу создания необходимых соединений и форматирования результатов, чтобы эти ассоциации могли быть частью набора результатов.

Пространство имен: Cake\ORM
Расположение: ORM/EagerLoader.php

Краткое описание свойств

  • $_aliasList protected
    array
    Содержит список имен ассоциаций, которые должны быть загружены с жадностью
  • $_autoFields protected
    boolean

    Управляет тем, будут ли загружаться поля из связанных таблиц с жадностью. Если установлено в false, поля из ассоциаций не будут загружаться.

  • $_containOptions protected
    array

    Список опций, принимаемых ассоциациями в индексе contain(), по ключу для более быстрого доступа

  • $_containments protected
    array

    Вложенный массив, описывающий ассоциацию, которая должна быть извлечена, и опции, которые должны быть применены для каждой из них, если таковые имеются

  • $_joinsMap protected
    array

    Карта псевдонимов таблиц, указывающая на объекты ассоциации, которые они представляют для запроса.

  • $_loadExternal protected
    array
    Список ассоциаций, которые должны быть загружены с помощью отдельного запроса
  • $_matching protected
    Cake\ORM\EagerLoader
    Другой экземпляр EagerLoader, который будет использоваться для ассоциаций «сопоставления».
  • $_normalized protected
    array

    Содержит вложенный массив с скомпилированным деревом содержаний. Это нормализованная версия массива содержаний, предоставленного пользователем.

Краткое описание методов

  • _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
Изменённый оператор со дополнительными загрузчиками
END_OF_DOCUMENT_MARKER

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API