CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识和商标
  • 商业解决方案
  • 周边产品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与进来
    • 问题 (Github)
    • 烘焙坊
    • 特色资源
    • 培训
    • 聚会
    • 我的 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
      • Behavior
      • Exception
      • Locator
      • Query
      • Rule
    • Routing
    • TestSuite
    • Utility
    • Validation
    • View

类 EagerLoader

公开用于存储在提供查询后应为表格进行预加载关联的方法,并委托创建所需联接和装饰结果的任务,以便这些关联可以成为结果集的一部分。

命名空间: Cake\ORM

属性摘要

  • $_aliasList protected
    array

    包含要预加载的关联名称列表。

  • $_autoFields protected
    bool

    控制是否会预加载关联表格的字段。当设置为 false 时,不会从关联加载任何字段。

  • $_containOptions protected
    array<string, int>

    关联在 contain() 中接受的选项列表,按键索引以便更快地访问。

  • $_containments protected
    array<string, mixed>

    描述要获取的关联以及要对每个关联应用的选项(如果有)的嵌套数组。

  • $_joinsMap protected
    array<string,Cake\ORM\EagerLoadable>

    指向表别名与其代表的关联对象的映射,用于查询。

  • $_loadExternal protected
    arrayCake\ORM\EagerLoadable>

    应通过单独的查询加载的关联列表。

  • $_matching protected
    Cake\ORM\EagerLoader|null

    另一个 EagerLoader 实例,将用于“匹配”关联。

  • $_normalized protected
    Cake\ORM\EagerLoadable|arrayCake\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 对象的数组。

  • clearContain() public

    删除任何现有的非匹配包含。

  • contain() public

    设置应在提供查询时为特定表格预加载的关联列表。传递给此方法的关联表格列表必须已使用表格 API 作为关联预先设置。

  • disableAutoFields() public

    禁用自动加载包含关联的字段。

  • enableAutoFields() public

    设置包含的关联是否会自动加载字段。

  • externalAssociations() public

    返回一个数组,其中包含需要使用单独的查询获取的关联,每个数组值将包含一个 {@link \Cake\ORM\EagerLoadable} 对象。

  • getContain() public

    获取应在提供查询时为特定表格预加载的关联列表。传递给此方法的关联表格列表必须已使用表格 API 作为关联预先设置。

  • getMatching() public

    返回要匹配的关联的当前树。

  • isAutoFieldsEnabled() public

    获取包含的关联是否会自动加载字段。

  • loadExternal() public

    注入来自无法直接联接的关联的数据。

  • normalized() public

    返回应为表格预加载的关联的完全标准化数组。标准化数组将通过将所有关联排序在一个键下并将特殊选项排序在另一个键下来重新组织原始数组。

  • setMatching() public

    将新的关联添加到列表中,该列表将用于基于为该关联查找记录的结果来过滤任何给定查询的结果。您可以将关联的点分路径作为第一个参数传递给此方法,这将转化为使用 matching 选项设置所有这些关联。

方法详细说明

__clone() ¶ public

__clone(): void

处理克隆预加载器和预加载器。

返回值
void

_buildAssociationsMap() ¶ protected

_buildAssociationsMap(array $map, arrayCake\ORM\EagerLoadable> $level, bool $matching = false): array

构建用于 associationsMap() 方法返回值的映射的内部方法。

参数
array $map

映射的初始数组。

arrayCake\ORM\EagerLoadable> $level

EagerLoadable 实例数组。

bool $matching optional

是否是通过 matching() 加载的关联。

返回值
array

_collectKeys() ¶ protected

_collectKeys(arrayCake\ORM\EagerLoadable> $external, Cake\ORM\Query\SelectQuery $query, array $results): array

用于返回将用于预加载关联的查询记录中的键的辅助函数。

参数
arrayCake\ORM\EagerLoadable> $external

要加载的外部关联列表。

Cake\ORM\Query\SelectQuery $query

生成结果的查询。

array $results

结果数组。

返回值
array

_correctStrategy() ¶ protected

_correctStrategy(Cake\ORM\EagerLoadable $loadable): void

如果由于在同一直接关联链下出现重复而需要,则更改关联获取策略。

参数
Cake\ORM\EagerLoadable $loadable

关联配置。

返回值
void

_fixStrategies() ¶ protected

_fixStrategies(): void

遍历可联接的别名列表,并更正获取策略,以避免在生成的查询中出现别名冲突。

此函数操作由 _normalizeContain() 函数生成的数组引用。

返回值
void

_groupKeys() ¶ protected

_groupKeys(array $results, array<string, array> $collectKeys): array

辅助函数,用于遍历语句并提取在 $collectKeys 中定义的列。

参数
array $results

结果数组。

array<string, array> $collectKeys

要收集的键。

返回值
array

_normalizeContain() ¶ protected

_normalizeContain(Cake\ORM\Table $parent, string $alias, array<string, mixed> $options, array<string, mixed> $paths): Cake\ORM\EagerLoadable

辅助函数,负责完全标准化使用 contain() 定义的深度关联。

参数
Cake\ORM\Table $parent

关联的拥有方。

string $alias

要加载的关联的名称。

array<string, mixed> $options

用于此关联的额外选项列表。

array<string, mixed> $paths

包含两个值的数组,第一个值是表示关联的点分隔字符串列表,这些字符串导致关联链中的此 $alias 被加载。第二个值是要遵循的实体属性路径,以获取相应关联的记录。

返回值
Cake\ORM\EagerLoadable
抛出
InvalidArgumentException
当包含引用不存在的关联时。

_reformatContain() ¶ protected

_reformatContain(array $associations, array $original): array

格式化包含数组,以便关联始终在数组中作为键设置。此函数将原始关联数组与提供的新的关联合并。

参数
array $associations

用户提供的包含数组。

array $original

要与新包含数组合并的原始包含数组。

返回值
array

_resolveJoins() ¶ protected

_resolveJoins(arrayCake\ORM\EagerLoadable> $associations, arrayCake\ORM\EagerLoadable> $matching = []): arrayCake\ORM\EagerLoadable>

辅助函数,用于编译所有可以在查询中联接的关联列表。

参数
arrayCake\ORM\EagerLoadable> $associations

要从中获取连接的关联列表。

arrayCake\ORM\EagerLoadable> $matching optional

应该强制连接的关联列表。

返回值
arrayCake\ORM\EagerLoadable>

addToJoinsMap() ¶ public

addToJoinsMap(string $alias, Cake\ORM\Association $assoc, bool $asMatching = false, string|null $targetProperty = null): void

将通常在查询中作为联接加载的表别名注册为属于关联。这有助于注水器了解如何处理来自此类联接表格的列。

参数
string $alias

表别名,如查询中所示。

Cake\ORM\Association $assoc

别名表示的关联对象;将被规范化。

bool $asMatching optional

此连接结果是否应被视为“匹配”关联。

string|null $targetProperty optional

连接结果应嵌套在其中的属性名称。如果未传递,将使用关联的默认属性。

返回值
void

associationsMap() ¶ public

associationsMap(Cake\ORM\Table $table): array

返回一个数组,其键是参与此预加载器的关联的点分路径。数组的值将包含以下键

  • alias: 关联别名
  • instance: 关联实例
  • canBeJoined: 关联是否将使用 JOIN 加载
  • entityClass: 用于水化结果的实体
  • nestKey: 可用于将数据正确插入结果的点分隔路径。
  • matching: 它是否是通过 matching() 加载的关联。
参数
Cake\ORM\Table $table

包含将被规范化的关联的表。

返回值
array

attachAssociations() ¶ public

attachAssociations(Cake\ORM\Query\SelectQuery $query, Cake\ORM\Table $repository, bool $includeFields): void

修改传递的查询以应用联接或任何其他需要转换以预加载 contain 数组中描述的关联。此方法不会修改查询以加载外部关联,即那些不能在不执行单独查询的情况下加载的关联。

参数
Cake\ORM\Query\SelectQuery $query

要修改的查询。

Cake\ORM\Table $repository

包含关联的存储库

bool $includeFields

是否将关联的所有字段追加到传递的查询。这可以根据包含数组中每个关联定义的设置进行覆盖。

返回值
void

attachableAssociations() ¶ public

attachableAssociations(Cake\ORM\Table $repository): arrayCake\ORM\EagerLoadable>

返回一个数组,其中包含可以使用单个查询获取的关联,数组键是关联别名,值将包含一个包含 Cake\ORM\EagerLoadable 对象的数组。

参数
Cake\ORM\Table $repository

包含要附加的关联的表。

返回值
arrayCake\ORM\EagerLoadable>

clearContain() ¶ public

clearContain(): void

删除任何现有的非匹配包含。

这将重置/清除所有未通过 matching() 添加的包含关联。

返回值
void

contain() ¶ public

contain(array|string $associations, Closure|null $queryBuilder = null): array

设置应在提供查询时为特定表格预加载的关联列表。传递给此方法的关联表格列表必须已使用表格 API 作为关联预先设置。

关联可以使用点表示法或嵌套数组任意嵌套,这允许此对象计算连接或必须执行的任何其他查询以获取所需的关联数据。

每个传递的关联接受的选项

  • foreignKey: 用于设置不同的字段以匹配两个表,如果设置为 false,则不会自动生成任何连接条件
  • fields: 包含应从关联中获取的字段的数组
  • queryBuilder: 等效于传递回调而不是选项数组
  • matching: 是否通知关联类它应该通过该类获取的结果来过滤主查询。
  • joinType: 对于可连接的关联,要使用的 SQL 连接类型。
  • strategy: 要使用的加载策略(连接、选择、子查询)
参数
array|string $associations

要查询的表别名列表。当此方法多次调用时,它将合并以前的列表和新的列表。

Closure|null $queryBuilder optional

查询生成器回调。

返回值
array
抛出
InvalidArgumentException
当使用 $queryBuilder 和 $associations 数组时

disableAutoFields() ¶ public

disableAutoFields(): $this

禁用自动加载包含关联的字段。

返回值
$this

enableAutoFields() ¶ public

enableAutoFields(bool $enable = true): $this

设置包含的关联是否会自动加载字段。

参数
bool $enable optional

要设置的值。

返回值
$this

externalAssociations() ¶ public

externalAssociations(Cake\ORM\Table $repository): arrayCake\ORM\EagerLoadable>

返回一个数组,其中包含需要使用单独的查询获取的关联,每个数组值将包含一个 {@link \Cake\ORM\EagerLoadable} 对象。

参数
Cake\ORM\Table $repository

包含要加载的关联的表。

返回值
arrayCake\ORM\EagerLoadable>

getContain() ¶ public

getContain(): array

获取应在提供查询时为特定表格预加载的关联列表。传递给此方法的关联表格列表必须已使用表格 API 作为关联预先设置。

返回值
array

getMatching() ¶ public

getMatching(): array

返回要匹配的关联的当前树。

返回值
array

isAutoFieldsEnabled() ¶ public

isAutoFieldsEnabled(): bool

获取包含的关联是否会自动加载字段。

返回值
bool

loadExternal() ¶ public

loadExternal(Cake\ORM\Query\SelectQuery $query, iterable $results): iterable

注入来自无法直接联接的关联的数据。

参数
Cake\ORM\Query\SelectQuery $query

要为其热加载外部关联的查询。

iterable $results

结果。

返回值
可迭代
抛出
RuntimeException

normalized() ¶ public

normalized(Cake\ORM\Table $repository): array

返回应为表格预加载的关联的完全标准化数组。标准化数组将通过将所有关联排序在一个键下并将特殊选项排序在另一个键下来重新组织原始数组。

关联树的每个级别都将转换为一个 {@link \Cake\ORM\EagerLoadable} 对象,其中包含关联对象从数据库加载信息所需的所有信息。

此外,它将为每个关联设置一个“instance”键,其中包含来自相应源表的关联实例

参数
Cake\ORM\Table $repository

包含将被规范化的关联的表。

返回值
array

setMatching() ¶ public

setMatching(string $associationPath, Closure|null $builder = null, array<string, mixed> $options = []): $this

将新的关联添加到列表中,该列表将用于基于为该关联查找记录的结果来过滤任何给定查询的结果。您可以将关联的点分路径作为第一个参数传递给此方法,这将转化为使用 matching 选项设置所有这些关联。

选项

  • joinType: INNER、OUTER、...
    • fields: 要包含的字段
    • negateMatch: 是否在目标关联上添加条件否定匹配
参数
string $associationPath

点分隔关联路径,“Name1.Name2.Name3”。

Closure|null $builder optional

用于设置过滤查询的额外选项的回调函数。

array<string, mixed> $options optional

关联匹配的额外选项。

返回值
$this

属性详细说明

$_aliasList ¶ protected

包含要预加载的关联名称列表。

类型
array

$_autoFields ¶ protected

控制是否会预加载关联表格的字段。当设置为 false 时,不会从关联加载任何字段。

类型
bool

$_containOptions ¶ protected

关联在 contain() 中接受的选项列表,按键索引以便更快地访问。

类型
array<string, int>

$_containments ¶ protected

描述要获取的关联以及要对每个关联应用的选项(如果有)的嵌套数组。

类型
array<string, mixed>

$_joinsMap ¶ protected

指向表别名与其代表的关联对象的映射,用于查询。

类型
array<string,Cake\ORM\EagerLoadable>

$_loadExternal ¶ protected

应通过单独的查询加载的关联列表。

类型
arrayCake\ORM\EagerLoadable>

$_matching ¶ protected

另一个 EagerLoader 实例,将用于“匹配”关联。

类型
Cake\ORM\EagerLoader|null

$_normalized ¶ protected

包含一个嵌套数组,其中包含已编译的包含树。这是用户提供的包含数组的标准化版本。

类型
Cake\ORM\EagerLoadable|arrayCake\ORM\EagerLoadable>|null
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识和商标
  • 社区
  • 参与进来
  • 问题 (Github)
  • 烘焙坊
  • 特色资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻通讯
  • LinkedIn
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • 帮助与支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成