Spec-Zone.ru › CakePHP 3.6

Класс 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 deprecated
    Устанавливает/получает, будут ли поля содержащих ассоциаций загружаться автоматически.
  • clearContain() public
    Удаляет любые существующие содержащие ассоциации, которые не соответствуют заданным параметрам.
  • contain() public

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

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

_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

должны ли быть добавлены все поля из ассоциаций в переданный запрос. Это можно переопределить в соответствии с настройками, определенными для каждой ассоциации в массиве 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: Стратегия загрузки (объединение, выборка, подзапрос).

Параметры

массив|строка $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[]

getContain()source public

getContain( )

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

Возвращает

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

getMatching()source public

getMatching( )

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

Возвращает

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

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 deprecated

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

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

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

Устаревшее

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

Параметры

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

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

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

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

Возвращает

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

normalized()source public

normalized( Cake\ORM\Table $repository )

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

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

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

Параметры

Cake\ORM\Table $repository

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

Возвращает

массив

setMatching()source public

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

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

Параметры

  • 'joinType': INNER, OUTER, ...
  • '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 массив

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

[]
END_OF_DOCUMENT_MARKER

$_joinsMapsource

protected массив

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

[]

$_loadExternalsource

protected Cake\ORM\EagerLoadable[]

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

[]

$_matchingsource

protected Cake\ORM\EagerLoader

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

$_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.6/class-Cake.ORM.EagerLoader.html

Spec-Zone.ru

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