类 SelectWithPivotLoader
实现使用 SELECT 查询和中间表加载关联的逻辑
属性摘要
-
$alias protected
string
加载结果的关联的别名
-
$associationType protected
string
触发加载的关联类型
-
$bindingKey protected
array|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
Cake\Database\ExpressionInterfaceClosure|array|string|null
加载关联的排序选项
-
$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
辅助方法,用于推断请求的查找器及其选项。
-
_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\SelectQuery $query, list<string>|string $key, mixed $filter): Cake\ORM\Query\SelectQuery
在给定过滤键和一些过滤值的情况下,将任何加载目标表查询中相关记录集所需的条件附加到目标表查询中。
参数
-
Cake\ORM\Query\SelectQuery
$query 目标表的查询
-
list<string>|string
$key 应用于过滤的字段
-
mixed
$filter 应用于匹配 $key 的值
返回值
Cake\ORM\Query\SelectQuery
_addFilteringJoin() ¶ protected
_addFilteringJoin(Cake\ORM\Query\SelectQuery $query, list<string>|string $key, Cake\ORM\Query\SelectQuery $subquery): Cake\ORM\Query\SelectQuery
在给定过滤键和一些过滤值的情况下,将任何加载目标表查询中相关记录集所需的条件附加到目标表查询中,当过滤需要使用子查询完成时。
参数
-
Cake\ORM\Query\SelectQuery
$query 目标表的查询
-
list<string>|string
$key 应用于过滤的字段
-
Cake\ORM\Query\SelectQuery
$subquery 用于过滤的子查询
返回值
Cake\ORM\Query\SelectQuery
_assertFieldsPresent() ¶ protected
_assertFieldsPresent(Cake\ORM\Query\SelectQuery $fetchQuery, list<string> $key): void
检查获取查询是否具有自动字段或已选择外键字段。如果缺少所需的字段,则抛出异常。
参数
-
Cake\ORM\Query\SelectQuery
$fetchQuery -
list<string>
$key
返回值
void
_buildQuery() ¶ protected
_buildQuery(array<string, mixed> $options): Cake\ORM\Query\SelectQuery
辅助函数,用于构造一个新的 Query 对象,以返回目标表中与源表中 $options 指定的那些关联的所有记录。
用于基于条件急切加载目标表中的记录。
参数
-
array<string, mixed>
$options eagerLoader() 接受的选项
返回值
Cake\ORM\Query\SelectQuery
抛出
InvalidArgumentException
当关联需要键但未选中时。
_buildResultMap() ¶ protected
_buildResultMap(Cake\ORM\Query\SelectQuery $fetchQuery, array<string, mixed> $options): array<string, mixed>
构建一个包含 fetchQuery 结果的数组,这些结果按对应于此关联的外键值索引。
参数
-
Cake\ORM\Query\SelectQuery
$fetchQuery 获取结果的查询
-
array<string, mixed>
$options 传递给 eager loader 的选项
返回值
array<string, mixed>
抛出
Cake\Database\Exception\DatabaseException
当关联属性不是结果集的一部分时。
_buildSubquery() ¶ protected
_buildSubquery(Cake\ORM\Query\SelectQuery $query): Cake\ORM\Query\SelectQuery
构建一个要用作过滤目标表中记录条件的查询,它是通过克隆用于加载源表中记录的原始查询构建的。
参数
-
Cake\ORM\Query\SelectQuery
$query 用于加载源记录的原始查询
返回值
Cake\ORM\Query\SelectQuery
_createTupleCondition() ¶ protected
_createTupleCondition(Cake\ORM\Query\SelectQuery $query, list<string> $keys, mixed $filter, string $operator): Cake\Database\Expression\TupleComparison
返回一个 TupleComparison 对象,该对象可用于使用提供的运算符将来自 $keys 的所有字段与 $filter 中的元组值匹配。
参数
-
Cake\ORM\Query\SelectQuery
$query 目标表的查询
-
list<string>
$keys 应用于过滤的字段
-
mixed
$filter 应用于匹配 $key 的值
-
string
$operator 用于比较元组的运算符
返回值
Cake\Database\Expression\TupleComparison
_defaultOptions() ¶ protected
_defaultOptions(): array<string, mixed>
返回用于 eagerLoader 的默认选项
返回值
array<string, mixed>
_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): list<string>|string
生成一个用作表字段的字符串,该字段包含应应用过滤器值的那些值
参数
-
array<string, mixed>
$options 用于获取链接字段的选项。
返回值
list<string>|string
_multiKeysInjector() ¶ protected
_multiKeysInjector(array<string, mixed> $resultMap, list<string> $sourceKeys, string $nestKey): Closure
返回一个可调用对象,用于查询结果集中的每一行,用于在匹配需要使用多个外键完成时注入急切加载的行
参数
-
array<string, mixed>
$resultMap 包含目标表的带键数组
-
list<string>
$sourceKeys 一个带有别名键的数组,用于匹配
-
string
$nestKey 结果应该嵌套在其中的键
返回值
Closure
_resultInjector() ¶ protected
_resultInjector(Cake\ORM\Query\SelectQuery $fetchQuery, array<string, mixed> $resultMap, array<string, mixed> $options): Closure
返回一个可调用对象,用于查询结果集中的每一行,用于注入急切加载的行
参数
-
Cake\ORM\Query\SelectQuery
$fetchQuery 用于获取结果的查询
-
array<string, mixed>
$resultMap 一个数组,其中外键作为键,相应的目标表结果作为值。
-
array<string, mixed>
$options 传递给 eagerLoader 方法的选项
返回值
Closure
_subqueryFields() ¶ protected
_subqueryFields(Cake\ORM\Query\SelectQuery $query): array<string, array>
计算需要参与子查询的字段。
通常,这包括绑定键列。如果存在 ORDER BY,则这些列也被包含在内,因为这些列可能是计算值或常量值,需要存在才能确保加载正确的关联数据。
参数
-
Cake\ORM\Query\SelectQuery
$query 获取字段的查询。
返回值
array<string, array>
buildEagerLoader() ¶ public
buildEagerLoader(array<string, mixed> $options): Closure
返回一个可调用对象,该对象可用于将关联结果注入给定的迭代器中。此方法接受的选项与 Association::eagerLoader()
相同
参数
-
array<string, mixed>
$options 与
Association::eagerLoader()
相同的选项
返回值
Closure
属性详情
$junctionConditions ¶ protected
中间关联的自定义条件
类型
Cake\Database\ExpressionInterfaceClosure|array|string|null