Класс SelectLoader
Реализует логику загрузки ассоциации с помощью запроса SELECT
Краткое описание свойств
- $alias protected
stringПсевдоним ассоциации, загружающей результаты
- $associationType protected
stringТип ассоциации, вызывающей загрузку
- $bindingKey protected
stringКлюч привязки для исходной ассоциации.
- $finder protected
callableВызываемый объект, который вернёт объект запроса, используемый для загрузки результатов ассоциации
- $foreignKey protected
array|stringВнешний ключ целевой ассоциации
- $sort protected
stringПараметры сортировки для загрузки ассоциации
- $sourceAlias protected
stringПсевдоним исходной ассоциации
- $strategy protected
stringСтратегия, используемая для загрузки: select или подзапрос
- $targetAlias protected
stringПсевдоним целевой ассоциации
Краткое описание методов
-
__construct() public
Копирует массив опций в свойства данного класса. Ключи в массиве соответствуют свойствам данного класса.
-
_addFilteringCondition() protected
Добавляет любые условия, необходимые для загрузки соответствующего набора записей в целевую таблицу в запросе, с учётом ключа фильтра и значений фильтра.
-
_addFilteringJoin() protected
Добавляет любые условия, необходимые для загрузки соответствующего набора записей в целевую таблицу в запросе, с учётом ключа фильтра и значений фильтра, когда фильтрация должна выполняться с помощью подзапроса.
-
_assertFieldsPresent() protected
Проверяет, что в запросе выборки либо включены автоматические поля, либо выбраны поля внешнего ключа. Если требуемые поля отсутствуют, генерируется исключение.
-
_buildQuery() protected
Вспомогательная функция для построения нового объекта запроса, возвращающего все записи в целевой таблице, связанные с указанными в $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Исключения
InvalidArgumentException_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, индексированный по значению внешнего ключа, соответствующему этой ассоциации.
Параметры
-
Cake\ORM\Query$fetchQuery Запрос для получения результатов
-
array<string, mixed>$options Опции, переданные в eagerLoader
Возвращает
array<string, mixed>_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
Вспомогательный метод для определения запрошенного findera и его опций.
Возвращает выведенные опции из findera $type.
Примеры:
Следующее вызовет finder 'translations' со значением findera в качестве своих опций: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);
Параметры
-
array|string$finderData Имя findera или массив, содержащий имя в качестве ключа и опции в качестве значения.
Возвращает
array_linkField() protected
_linkField(array<string, mixed> $options): array<string>|string
Генерирует строку, используемую в качестве поля таблицы, содержащей значения, на основе которых применяется фильтр.
Параметры
-
array<string, mixed>$options Опции для получения поля связи.
Возвращает
array<string>|stringИсключения
RuntimeException_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 Массив с внешним ключом в качестве ключей и соответствующими результатами целевой таблицы в качестве значения.
-
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 защищенное
Псевдоним загрузки результатов ассоциации
Тип
string$associationType защищенное
Тип ассоциации, вызывающей загрузку
Тип
string$bindingKey защищенное
Ключ привязки для исходной ассоциации.
Тип
string$finder защищенное
Вызываемый объект, возвращающий объект запроса, используемый для загрузки результатов ассоциации
Тип
callable$foreignKey защищенное
Внешний ключ для целевой ассоциации
Тип
array|string$sort защищенное
Параметры сортировки для загрузки ассоциации
Тип
string$sourceAlias защищенное
Псевдоним исходной ассоциации
Тип
string$strategy защищенное
Стратегия загрузки: выборка или подзапрос
Тип
string$targetAlias защищенное
Псевдоним целевой ассоциации
Тип
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.SelectLoader.html