Spec-Zone.ru › CakePHP 3.5

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

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

  • _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().

END_OF_DOCUMENT_MARKER

contain()source public

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

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

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

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

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

Parameters

array|string $associations optional []

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

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

Returns

array
Содержания.

Throws

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

enableAutoFields()source public

enableAutoFields( boolean $enable true )

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

Parameters

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

Returns


$this

externalAssociations()source public

externalAssociations( Cake\ORM\Table $repository )

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

Parameters

Cake\ORM\Table $repository

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

Returns

Cake\ORM\EagerLoadable[]

getMatching()source public

getMatching( )

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

Returns

array
Результат массива containments

isAutoFieldsEnabled()source public

isAutoFieldsEnabled( )

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

Returns

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

loadExternal()source public

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

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

Parameters

Cake\ORM\Query $query

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

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

Returns

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

matching()source public

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

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

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

Deprecated

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

Parameters

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

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

array $options optional []

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

Returns

array
Результат массива containments

normalized()source public

normalized( Cake\ORM\Table $repository )

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

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

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

Parameters

Cake\ORM\Table $repository

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

Returns

array

setMatching()source public

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

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

Параметры

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

Parameters

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

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

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

Returns


$this

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

$_aliasListsource

protected array

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

[]

$_autoFieldssource

protected boolean

Управляет тем, будут ли поля из связанных таблиц загружаться с помощью eager loading. Если установлено в 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 Cake\ORM\EagerLoadable[]

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

[]

$_matchingsource

protected Cake\ORM\EagerLoader

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

$_normalizedsource

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

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

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

Spec-Zone.ru

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