Spec-Zone.ru › CakePHP 3.1

Класс EagerLoader

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

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

Подробное описание методов

_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
список ассоциаций, из которых нужно получить объединения.
массив $matching optional []
список ассоциаций, которые должны быть принудительно объединены.

Возвращает

array
массив

addToJoinsMapsource public

addToJoinsMap( string $alias , Cake\ORM\Association $assoc , boolean $asMatching false )

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

Параметры

строка $alias
Псевдоним таблицы, как он отображается в запросе.
Cake\ORM\Association $assoc
Объект ассоциации, который представляет псевдоним; будет нормализован
булево $asMatching optional 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 )

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

Параметры

булево $value optional null
Значение для установки.

Возвращает

boolean
Текущее значение.

clearContainsource public

clearContain( )

Удаляет любые существующие содержащиеся ассоциации, не основанные на соответствии.

Это сбросит/очистит любые содержащиеся ассоциации, которые не были добавлены с помощью matching().

END_OF_DOCUMENT_MARKER

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
массив

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

$_aliasListsource

protected массив

Содержит список имён ассоциаций, которые должны быть жадно загружены

[]

$_autoFieldssource

protected логическое значение

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

true

$_containOptionssource

protected массив

Список параметров, принимаемых ассоциациями в 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 массив

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

[]

$_joinsMapsource

protected массив

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

[]

$_loadExternalsource

protected массив

Список ассоциаций, которые должны быть загружены с помощью отдельного запроса

[]

$_matchingsource

protected Cake\ORM\EagerLoader

Ещё один экземпляр EagerLoader, который будет использоваться для ассоциаций 'matching'.

$_normalizedsource

protected массив

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

© 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

Spec-Zone.ru

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