CakePHP
  • 文档
    • 手册
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • Logo & 商标
  • 商业解决方案
  • 周边产品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与
    • 问题 (Github)
    • Bakery
    • 特色资源
    • 培训
    • Meetups
    • 我的 CakePHP
    • CakeFest
    • 新闻简报
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • 帮助 & 支持
    • 论坛
    • Stack Overflow
    • IRC
    • Slack
    • 付费支持
CakePHP

C CakePHP 5.1 Chiffon API

  • 项目
    • CakePHP
      • CakePHP
      • Chronos
      • Elastic Search
      • 队列
  • 版本
    • 5.1
      • 5.1
      • 5.0
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

命名空间

  • 全局
  • Cake
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
    • Database
    • Datasource
    • Error
    • Event
    • Form
    • Http
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
      • Association
        • Loader
      • Behavior
      • Exception
      • Locator
      • Query
      • Rule
    • Routing
    • TestSuite
    • Utility
    • Validation
    • View

类 SelectLoader

使用 SELECT 查询加载关联的逻辑实现

命名空间: Cake\ORM\Association\Loader

属性概述

  • $alias protected
    string

    加载结果的关联别名

  • $associationType protected
    string

    触发加载的关联类型

  • $bindingKey protected
    array|string

    源关联的绑定键。

  • $finder protected
    callable

    一个可调用函数,将返回一个用于加载关联结果的查询对象

  • $foreignKey protected
    array|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

    辅助函数,用于构造一个新的查询对象,以返回目标表中与源表中 $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
抛出
InvalidArgumentException

_buildQuery() ¶ protected

_buildQuery(array<string, mixed> $options): Cake\ORM\Query\SelectQuery

辅助函数,用于构造一个新的查询对象,以返回目标表中与源表中 $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>

_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
抛出
Cake\Database\Exception\DatabaseException

_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

属性详情

$alias ¶ protected

加载结果的关联别名

类型
string

$associationType ¶ protected

触发加载的关联类型

类型
string

$bindingKey ¶ protected

源关联的绑定键。

类型
array|string

$finder ¶ protected

一个可调用函数,将返回一个用于加载关联结果的查询对象

类型
callable

$foreignKey ¶ protected

指向目标关联的外键

类型
array|string

$sort ¶ protected

加载关联的排序选项

类型
Cake\Database\ExpressionInterfaceClosure|array|string|null

$sourceAlias ¶ protected

源关联的别名

类型
string

$strategy ¶ protected

用于加载的策略,选择或子查询

类型
string

$targetAlias ¶ protected

目标关联的别名

类型
string
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 手册
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • Logo & 商标
  • 社区
  • 参与
  • 问题 (Github)
  • Bakery
  • 特色资源
  • 培训
  • Meetups
  • 我的 CakePHP
  • CakeFest
  • 新闻简报
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • 帮助 & 支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成