Класс SelectWithPivotLoader
Реализует логику загрузки ассоциации с помощью запроса SELECT и сводной таблицы
Краткое описание свойств
- $alias protected
stringПсевдоним ассоциации, загружающей результаты
- $associationType protected
stringТип ассоциации, вызвавшей загрузку
- $bindingKey protected
stringКлюч связи для исходной ассоциации.
- $finder protected
callableВызываемый объект, возвращающий объект запроса, используемый для загрузки результатов ассоциации
- $foreignKey protected
array|stringВнешний ключ для целевой ассоциации
- $junctionAssoc protected
Cake\ORM\Association\HasManyЭкземпляр ассоциации соединения
- $junctionAssociationName protected
stringИмя ассоциации соединения
- $junctionConditions protected
Cake\Database\ExpressionInterfaceClosure|array|string|nullПользовательские условия для ассоциации соединения
- $junctionProperty protected
stringИмя свойства для ассоциации соединения, где ее результаты должны быть вложены.
- $sort protected
stringПараметры сортировки для загрузки ассоциации
- $sourceAlias protected
stringПсевдоним исходной ассоциации
- $strategy protected
stringСтратегия загрузки, либо выбор, либо подзапрос
- $targetAlias protected
stringПсевдоним целевой ассоциации
Краткое описание методов
-
__construct() public
Копирует массив опций в свойства данного класса. Ключи в массиве соответствуют свойствам в этом классе.
-
_addFilteringCondition() protected
Добавляет любые необходимые условия для загрузки соответствующего набора записей в целевую таблицу запроса, учитывая ключ фильтра и некоторые значения фильтра.
-
_addFilteringJoin() protected
Добавляет любые необходимые условия для загрузки соответствующего набора записей в целевую таблицу запроса, учитывая ключ фильтра и некоторые значения фильтра, когда фильтрация должна выполняться с использованием подзапроса.
-
_assertFieldsPresent() protected
Проверяет, что запрос извлечения имеет активные автоматические поля или поля внешнего ключа выбраны. Если требуемые поля отсутствуют, генерируется исключение.
-
_buildQuery() protected
Вспомогательная функция для создания нового объекта Query, чтобы вернуть все записи в целевой таблице, связанные с теми, которые указаны в $options из исходной таблицы.
-
_buildResultMap() protected
Создаёт массив, содержащий результаты из fetchQuery, индексированные по значению внешнего ключа, соответствующему этой ассоциации.
-
_buildSubquery() protected
Создаёт запрос, который будет использоваться в качестве условия для фильтрации записей в целевой таблице. Он создаётся путём клонирования исходного запроса, который использовался для загрузки записей в исходной таблице.
-
_createTupleCondition() protected
Возвращает объект TupleComparison, который может быть использован для сопоставления всех полей из $keys со значениями кортежа в $filter с использованием предоставленного оператора.
-
_defaultOptions() protected
Возвращает значения по умолчанию для использования в eagerLoader.
-
_extractFinder() protected
Вспомогательный метод для вывода запрошенного findera и его опций.
-
_linkField() protected
Генерирует строку, используемую в качестве поля таблицы, содержащей значения, по которым должен применяться фильтр.
-
_multiKeysInjector() protected
Возвращает вызываемый объект, используемый для каждой строки в наборе результатов запроса для вставки загруженных с жадностью строк, когда сопоставление должно выполняться с помощью нескольких внешних ключей.
-
_resultInjector() protected
Возвращает вызываемый объект, используемый для каждой строки в наборе результатов запроса для вставки загруженных с жадностью строк.
-
_subqueryFields() protected
Вычисляются поля, которые должны участвовать в подзапросе.
-
buildEagerLoader() public
Возвращает вызываемый объект, который может использоваться для вставки результатов ассоциации в данный итератор. Опции, принимаемые этим методом, совпадают с
Association::eagerLoader()
Подробное описание методов
__construct() public
__construct(array<string, mixed> $options)
Копирует массив опций в свойства этого класса. Ключи в массиве соответствуют свойствам этого класса.
Параметры
-
array<string, mixed>$options
_addFilteringCondition() protected
_addFilteringCondition(Cake\ORM\Query $query, array<string>|string $key, mixed $filter): Cake\ORM\Query
Добавляет условия, необходимые для загрузки соответствующего набора записей в запросе целевой таблицы, учитывая ключ фильтра и некоторые значения фильтрации.
Параметры
-
Cake\ORM\Query$query Запрос целевой таблицы
-
array<string>|string$key Поля, которые должны использоваться для фильтрации
-
mixed$filter Значение, которое должно использоваться для соответствия $key
Возвращает
Cake\ORM\Query_addFilteringJoin() protected
_addFilteringJoin(Cake\ORM\Query $query, array<string>|string $key, Cake\ORM\Query $subquery): Cake\ORM\Query
Добавляет условия, необходимые для загрузки соответствующего набора записей в запросе целевой таблицы, учитывая ключ фильтра и некоторые значения фильтрации, когда фильтрация должна выполняться с помощью подзапроса.
Параметры
-
Cake\ORM\Query$query Запрос целевой таблицы
-
array<string>|string$key Поля, которые должны использоваться для фильтрации
-
Cake\ORM\Query$subquery Подзапрос для фильтрации
Возвращает
Cake\ORM\Query_assertFieldsPresent() protected
_assertFieldsPresent(Cake\ORM\Query $fetchQuery, array<string> $key): void
Проверяет, что запрос извлечения имеет включенные поля автозаполнения или выбраны поля foreignKey. Если необходимые поля отсутствуют, выбрасывается исключение.
Параметры
-
Cake\ORM\Query$fetchQuery -
array<string>$key
Возвращает
void_buildQuery() protected
_buildQuery(array<string, mixed> $options): Cake\ORM\Query
Вспомогательная функция для создания нового объекта Query, чтобы вернуть все записи в целевой таблице, связанные с теми, которые указаны в $options из исходной таблицы.
Используется для жадной загрузки записей в целевой таблице на основе условий.
Параметры
-
array<string, mixed>$options Опции, принимаемые eagerLoader()
Возвращает
Cake\ORM\QueryИсключения
InvalidArgumentExceptionКогда ключ необходим для ассоциаций, но не выбран.
_buildResultMap() protected
_buildResultMap(Cake\ORM\Query $fetchQuery, array<string, mixed> $options): array<string, mixed>
Создаёт массив, содержащий результаты из fetchQuery, индексированные по значению foreignKey, соответствующему этой ассоциации.
Параметры
-
Cake\ORM\Query$fetchQuery Запрос для получения результатов
-
array<string, mixed>$options Опции, переданные в eager loader
Возвращает
array<string, mixed>Исключения
RuntimeExceptionкогда свойство ассоциации не является частью набора результатов.
_buildSubquery() protected
_buildSubquery(Cake\ORM\Query $query): Cake\ORM\Query
Строит запрос, используемый в качестве условия для фильтрации записей в целевой таблице. Он создаётся путем клонирования исходного запроса, который использовался для загрузки записей в исходной таблице.
Параметры
-
Cake\ORM\Query$query Исходный запрос, используемый для загрузки записей источника
Возвращает
Cake\ORM\Query_createTupleCondition() protected
_createTupleCondition(Cake\ORM\Query $query, array<string> $keys, mixed $filter, string $operator): Cake\Database\Expression\TupleComparison
Возвращает объект TupleComparison, который можно использовать для сопоставления всех полей из $keys со значениями кортежа в $filter с использованием указанного оператора.
Параметры
-
Cake\ORM\Query$query Запрос целевой таблицы
-
array<string>$keys Поля, которые должны использоваться для фильтрации
-
mixed$filter Значение, которое должно использоваться для соответствия $key
-
string$operator Оператор сравнения кортежей
Возвращает
Cake\Database\Expression\TupleComparison_defaultOptions() protected
_defaultOptions(): array
Возвращает значения по умолчанию для использования в eagerLoader
Возвращает
array_extractFinder() protected
_extractFinder(array|string $finderData): array
Вспомогательный метод для определения запрошенного поиска и его параметров.
Возвращает выведенные параметры из поиска $type.
Примеры:
Следующее вызовет поиск 'translations' со значением поиска в качестве своих параметров: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);
Параметры
-
array|string$finderData Имя поиска или массив, имеющий имя в качестве ключа и параметры в качестве значения.
Возвращает
array_linkField() protected
_linkField(array<string, mixed> $options): array<string>|string
Генерирует строку, используемую в качестве поля таблицы, содержащего значения, на основе которых должен применяться фильтр.
Параметры
-
array<string, mixed>$options Опции для получения поля связи.
Возвращает
array<string>|string_multiKeysInjector() protected
_multiKeysInjector(array<string, mixed> $resultMap, array<string> $sourceKeys, string $nestKey): Closure
Возвращает вызываемый элемент, который будет использоваться для каждой строки в наборе результатов запроса для вставки загруженных строк, когда сопоставление должно выполняться с несколькими внешними ключами.
Параметры
-
array<string, mixed>$resultMap Массив с ключами, содержащими целевую таблицу
-
array<string>$sourceKeys Массив с алиасами ключей для сопоставления
-
string$nestKey Ключ, под которым результаты должны быть вложены
Возвращает
Closure_resultInjector() protected
_resultInjector(Cake\ORM\Query $fetchQuery, array<string, mixed> $resultMap, array<string, mixed> $options): Closure
Возвращает вызываемый элемент, который будет использоваться для каждой строки в наборе результатов запроса для вставки загруженных строк.
Параметры
-
Cake\ORM\Query$fetchQuery Запрос, используемый для извлечения результатов
-
array<string, mixed>$resultMap Массив с foreignKey в качестве ключей и соответствующими результатами целевой таблицы в качестве значения.
-
array<string, mixed>$options Параметры, переданные методу eagerLoader
Возвращает
Closure_subqueryFields() protected
_subqueryFields(Cake\ORM\Query $query): array<string, array>
Вычисляет поля, которые должны участвовать в подзапросе.
Обычно это включает столбцы ключа связи. Если есть ORDER BY, эти столбцы также включаются, поскольку поля могут быть вычисленными или константными значениями, которые должны присутствовать, чтобы гарантировать загрузку правильных данных ассоциации.
Параметры
-
Cake\ORM\Query$query Запрос для получения полей.
Возвращает
array<string, array>buildEagerLoader() public
buildEagerLoader(array<string, mixed> $options): Closure
Возвращает вызываемый элемент, который может использоваться для вставки результатов ассоциации в заданный итератор. Опции, принимаемые этим методом, такие же, как Association::eagerLoader()
Параметры
-
array<string, mixed>$options Те же опции, что и в
Association::eagerLoader()
Возвращает
ClosureПодробное описание свойств
$alias protected
Псевдоним ассоциации, загружающей результаты
Тип
string$associationType protected
Тип ассоциации, вызывающей загрузку
Тип
string$bindingKey protected
Ключ привязки для исходной ассоциации.
Тип
string$finder protected
Вызываемый объект, который вернёт объект запроса, используемый для загрузки результатов ассоциации
Тип
callable$foreignKey protected
Внешний ключ целевой ассоциации
Тип
array|string$junctionAssoc protected
Экземпляр ассоциации соединения
Тип
Cake\ORM\Association\HasMany$junctionAssociationName protected
Имя ассоциации соединения
Тип
string$junctionConditions protected
Настраиваемые условия для ассоциации соединения
Тип
Cake\Database\ExpressionInterfaceClosure|array|string|null$junctionProperty protected
Имя свойства для ассоциации соединения, где её результаты должны быть вложены.
Тип
string$sort protected
Параметры сортировки для загрузки ассоциации
Тип
string$sourceAlias protected
Псевдоним исходной ассоциации
Тип
string$strategy protected
Стратегия, используемая для загрузки, либо выбор, либо подзапрос
Тип
string$targetAlias protected
Псевдоним целевой ассоциации
Тип
string
© 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/4.3/class-Cake.ORM.Association.Loader.SelectWithPivotLoader.html