Spec-Zone.ru › CakePHP 3.8

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

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

  • attachAssociations() public

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

  • attachableAssociations() public

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

  • autoFields() public deprecated
    Устанавливает/получает, будут ли поля содержащихся ассоциаций загружаться автоматически.
  • clearContain() public
    Удаляет все существующие несопоставляемые содержащиеся элементы.
  • contain() public

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

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

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

  • getContain() public

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

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

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

  • matching() public deprecated

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

  • normalized() public

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

  • setMatching() public

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

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

__clone()source public

__clone( )

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

Клонировать _matching eager loader тоже.

_buildAssociationsMap()source protected

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

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

Параметры

массив $map
Начальный массив для карты.
массив $level
Массив экземпляров EagerLoadable.
boolean $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

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

attachableAssociations()source public

attachableAssociations( Cake\ORM\Table $repository )

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

массив

autoFields()source public deprecated

autoFields( boolean|null $enable = null )

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

Устарело

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

Параметры

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

Возвращает

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

clearContain()source public

clearContain( )

Удаляет все существующие содержательные элементы, не основанные на совпадениях.

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

END_OF_DOCUMENT_MARKER

contain()source public

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

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

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

Часть получения устарела начиная с версии 3.6.0. Используйте getContain() вместо этого.

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

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

Параметры

array|string $associations необязательно []

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

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

Возвращает

array
Содержимое.

Выбрасывает

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

disableAutoFields()source public

disableAutoFields( )

Отключает автоматическую загрузку полей связанных ассоциаций.

Возвращает


$this

enableAutoFields()source public

enableAutoFields( boolean $enable = true )

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

Параметры

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

Возвращает


$this

externalAssociations()source public

externalAssociations( Cake\ORM\Table $repository )

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

Cake\ORM\EagerLoadable[]

getContain()source public

getContain( )

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

Возвращает

array
Содержимое.

getMatching()source public

getMatching( )

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

Возвращает

array
Результат массива содержаний

isAutoFieldsEnabled()source public

isAutoFieldsEnabled( )

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

Возвращает

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

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 deprecated

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

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

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

Устарело

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

Параметры

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

setMatching()source public

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

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

Параметры

  • 'joinType': INNER, OUTER, ...
  • 'fields': Поля для включения

Параметры

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

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

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

Возвращает


$this

Подробности свойств

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

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

[]

$_loadExternalsource

protected Cake\ORM\EagerLoadable[]

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

[]

$_matchingsource

protected Cake\ORM\EagerLoader

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

$_normalizedsource

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

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

© 2005–present 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.8/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

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