Spec-Zone.ru › CakePHP 3.3

Класс 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

    Возвращает массив с ключами, представляющими собой точечный путь ассоциаций, участвующих в этом 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
ключи для сбора

Возвращает

массив
END_OF_DOCUMENT_MARKER

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

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

Каждый уровень дерева ассоциаций будет преобразован в объект 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

Spec-Zone.ru

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