Spec-Zone.ru › CakePHP 3.4

Класс 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
    Cake\ORM\EagerLoadable[]
    Список ассоциаций, которые должны быть загружены с помощью отдельного запроса
  • $_matching protected
    Cake\ORM\EagerLoader
    Другой экземпляр EagerLoader, который будет использоваться для ассоциаций «сопоставления».
  • $_normalized protected
    Cake\ORM\EagerLoadable[]|Cake\ORM\EagerLoadable|null

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

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

  • __clone() public
    Реализация хука клонирования
  • _buildAssociationsMap() protected

    Внутренний метод для построения карты, которая используется в качестве возвращаемого значения метода associationsMap().

  • _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 таблиц.

  • enableAutoFields() public
    Устанавливает, будут ли загружаться поля связанных ассоциаций автоматически.
  • externalAssociations() public

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

  • getMatching() public
    Возвращает текущее дерево ассоциаций для сопоставления.
  • isAutoFieldsEnabled() public
    Получает, будут ли загружаться поля связанных ассоциаций автоматически.
  • loadExternal() public

    Обрабатывает переданный объект оператора, чтобы вставить данные из ассоциаций, которые не могут быть непосредственно объединены.

  • matching() public

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

  • normalized() public

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

  • setMatching() public

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

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

__clone()source public

__clone( )

Реализация хука клонирования

Клонировать загрузчик _matching с ленивой загрузкой тоже.

_buildAssociationsMap()source protected

_buildAssociationsMap( array $map , array $level , boolean $matching false )

Внутренний метод для построения карты, которая используется в качестве возвращаемого значения метода associationsMap().

Параметры

массив $map
Исходный массив для карты.
массив $level
Массив экземпляров EagerLoadable.
логическое значение $matching необязательно false
Признак того, загружается ли ассоциация через matching().

Возвращает

массив
END_OF_DOCUMENT_MARKER

_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\Statement\BufferedStatement $statement , array $collectKeys )

Вспомогательная функция, используемая для перебора запроса и извлечения столбцов, определенных в $collectKeys.

Параметры

Cake\Database\Statement\BufferedStatement $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 в цепочке ассоциаций, которые должны быть загружены. Второе значение - путь, по которому следует следовать в свойствах сущностей для получения записи соответствующей ассоциации.

Возвращает

Cake\ORM\EagerLoadable
Объект с нормализованными ассоциациями

Выбрасывает

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 , string $targetProperty null )

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

Параметры

строка $alias
Псевдоним таблицы, как он отображается в запросе.
Cake\ORM\Association $assoc

Объект ассоциации, который представляет псевдоним; будет нормализован

булево $asMatching необязательно false

Указывает, будут ли результаты этого объединения обрабатываться как ассоциация 'сопоставления'.

строка $targetProperty необязательно null

Имя свойства, в котором результаты объединения должны быть вложены. Если не передано, будет использоваться стандартное свойство ассоциации.

associationsMap()source public

associationsMap( Cake\ORM\Table $table )

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

  • 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 )

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

Параметры

Cake\ORM\Query $query
Запрос, который необходимо изменить
Cake\ORM\Table $repository
Репозиторий, содержащий ассоциации
булево $includeFields

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

attachableAssociations()source public

attachableAssociations( Cake\ORM\Table $repository )

Возвращает массив с ассоциациями, которые можно получить с помощью одного запроса. Ключи массива - псевдонимы ассоциаций, а значения - массив объектов Cake\ORM\EagerLoadable.

Параметры

Cake\ORM\Table $repository

Таблица, содержащая ассоциации, которые необходимо добавить

Возвращает

массив

autoFields()source public

autoFields( boolean|null $enable null )

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

Устарело

3.4.0 Используйте enableAutoFields()/isAutoFieldsEnabled() вместо этого.

Параметры

булево|null $enable необязательно null
Значение для установки.

Возвращает

булево
Текущее значение.

clearContain()source public

clearContain( )

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

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

contain()source public

contain( array|string $associations [] , callable $queryBuilder null )

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

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

Допустимые параметры для каждой переданной ассоциации:

  • foreignKey: Используется для установки другого поля для сопоставления обеих таблиц. Если установлено в false, условия соединения не будут автоматически генерироваться.
  • fields: Массив с полями, которые должны быть извлечены из ассоциации.
  • queryBuilder: Эквивалентно передаче вызываемого объекта вместо массива параметров.
  • matching: Уведомляет класс ассоциации о том, что он должен отфильтровать основной запрос по результатам, полученным этим классом.
  • joinType: Для соединяемых ассоциаций, тип SQL-соединения, который следует использовать.
  • strategy: Стратегия загрузки (join, select, subquery).

Параметры

массив|строка $associations необязательно []

список псевдонимов таблиц, которые должны быть запрошены. При вызове этого метода несколько раз предыдущий список будет объединён с новым.

вызываемый объект $queryBuilder необязательно null
вызываемый объект для построения запроса

Возвращает

массив
Содержания.

Вызывает исключение

InvalidArgumentException
При использовании $queryBuilder с массивом $associations

enableAutoFields()source public

enableAutoFields( boolean $enable true )

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

Параметры

логическое значение $enable необязательно true
Значение для установки.

Возвращает


$this

externalAssociations()source public

externalAssociations( Cake\ORM\Table $repository )

Возвращает массив с ассоциациями, которые необходимо загрузить с помощью отдельного запроса. Каждый элемент массива будет содержать объект Cake\ORM\EagerLoadable.

Параметры

Cake\ORM\Table $repository

Таблица, содержащая ассоциации, которые нужно загрузить.

Возвращает

Cake\ORM\EagerLoadable[]

getMatching()source public

getMatching( )

Возвращает текущее дерево ассоциаций для сопоставления.

Возвращает

массив
Результирующий массив containments

isAutoFieldsEnabled()source public

isAutoFieldsEnabled( )

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

Возвращает

логическое значение
Текущее значение.

loadExternal()source public

loadExternal( Cake\ORM\Query $query , Cake\Database\StatementInterface $statement )

Декорирует переданный объект инструкции, чтобы вставить данные из ассоциаций, которые не могут быть напрямую объединены.

Параметры

Cake\ORM\Query $query

Запрос, для которого нужно загрузить внешние ассоциации.

Cake\Database\StatementInterface $statement
Инструкция, созданная после выполнения $query.

Возвращает

Cake\Database\StatementInterface
Изменённая инструкция с дополнительными загрузчиками

matching()source public

matching( string|null $assoc null , callable $builder null , array $options [] )

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

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

Устарело

3.4.0 Используйте setMatching()/getMatching() вместо этого.

Параметры

строка|null $assoc необязательно null
Одна ассоциация или путь к ассоциациям, разделённый точкой.
вызываемый объект $builder необязательно null

Функция обратного вызова, которая будет использоваться для установки дополнительных параметров к запросу фильтрации.

массив $options необязательно []

Дополнительные параметры для сопоставления ассоциаций, такие как 'joinType' и 'fields'.

Возвращает

массив
Результирующий массив containments

normalized()source public

normalized( Cake\ORM\Table $repository )

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

Каждый уровень дерева ассоциаций будет преобразован в объект Cake\ORM\EagerLoadable, который содержит всю необходимую информацию для объектов ассоциации для загрузки информации из базы данных.

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

Параметры

Cake\ORM\Table $repository

Таблица, содержащая ассоциацию, которая будет нормализована.

Возвращает

массив

setMatching()source public

setMatching( string $assoc , callable $builder null , array $options [] )

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

Параметры

  • 'joinType': ВНУТРЕННЕЕ, ВНЕШНЕЕ, ...
  • 'fields': Поля для включения

Параметры

строка $assoc
Одна ассоциация или путь к ассоциациям, разделенный точкой.
функция $builder необязательно null

функция обратного вызова для установки дополнительных параметров в фильтрующий запрос

массив $options необязательно []
Дополнительные параметры для сопоставления ассоциаций.

Возвращаемое значение


$this

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

$_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 Cake\ORM\EagerLoadable[]

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

[]

$_matchingsource

protected Cake\ORM\EagerLoader

Другой экземпляр EagerLoader, который будет использоваться для ассоциаций «сопоставления».

$_normalizedsource

protected Cake\ORM\EagerLoadable[]|Cake\ORM\EagerLoadable|null

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

© 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.4/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

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