CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识 & 商标
  • 商业解决方案
  • 商品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与
    • 问题 (Github)
    • 烘焙坊
    • 精选资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 新闻简报
    • 领英
    • YouTube
    • Facebook
    • 推特
    • 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

类 Marshaller

包含将数组数据转换为实体的逻辑。

在将请求数据转换为实体时很有用。

命名空间: Cake\ORM
参见: \Cake\ORM\Table::newEntity()
参见: \Cake\ORM\Table::newEntities()
参见: \Cake\ORM\Table::patchEntity()
参见: \Cake\ORM\Table::patchEntities()

属性摘要

  • $_table protected
    Cake\ORM\Table

    此 marshaller 对应的表实例。

方法摘要

  • __construct() public

    构造函数。

  • _belongsToMany() protected

    编组属于多方关联的数据。

  • _buildPropertyMap() protected

    构建属性 => 编组可调用函数的映射。

  • _loadAssociatedByIds() protected

    从 ID 加载属于多方关联的列表。

  • _marshalAssociation() protected

    创建一个新的子 marshaller 并编组关联的数据。

  • _mergeAssociation() protected

    创建一个新的子 marshaller 并合并关联的数据。

  • _mergeBelongsToMany() protected

    创建一个新的子 marshaller 并合并属于多方关联的关联数据。

  • _mergeJoinData() protected

    将特殊的 _joinData 属性合并到实体集中。

  • _normalizeAssociations() protected

    从原始传递的关联列表中返回一个数组,其中点符号被转换为嵌套数组,以便其他例程可以解析它们

  • _prepareDataAndOptions() protected

    返回准备用于验证和编组的数据和选项。

  • _validate() protected

    根据传递的选项返回数据集的验证错误。

  • dispatchAfterMarshal() protected

    分派 Model.afterMarshal 事件。

  • many() public

    水合多个实体及其关联数据。

  • merge() public

    将 $data 合并到 $entity 中,并对 $options 中传递的每个关联名称递归执行相同的操作。在合并关联时,如果给定关联中父实体中不存在实体,则将创建一个新实体。

  • mergeMany() public

    将 $data 中的每个元素合并到 $entities 中的每个实体中,并对 $options 中传递的每个关联名称递归执行相同的操作。在合并关联时,如果给定关联中父实体中不存在实体,则将创建一个新实体。

  • one() public

    水合一个实体及其关联数据。

方法详细信息

__construct() ¶ public

__construct(Cake\ORM\Table $table)

构造函数。

参数
Cake\ORM\Table $table

此 marshaller 对应的表。

_belongsToMany() ¶ protected

_belongsToMany(Cake\ORM\Association\BelongsToMany $assoc, array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>

编组属于多方关联的数据。

构建相关的实体并处理连接表实体的特殊情况。

参数
Cake\ORM\Association\BelongsToMany $assoc

要编组的关联。

array $data

要转换为实体的数据。

array<string, mixed> $options optional

选项列表。

返回值
arrayCake\Datasource\EntityInterface>
抛出
BadMethodCallException

InvalidArgumentException

RuntimeException

_buildPropertyMap() ¶ protected

_buildPropertyMap(array $data, array<string, mixed> $options): array

构建属性 => 编组可调用函数的映射。

参数
array $data

正在编组的数据。

array<string, mixed> $options

包含 'associated' 键的选项列表。

返回值
array
抛出
InvalidArgumentException
当关联不存在时。

_loadAssociatedByIds() ¶ protected

_loadAssociatedByIds(Cake\ORM\Association $assoc, array $ids): arrayCake\Datasource\EntityInterface>

从 ID 加载属于多方关联的列表。

参数
Cake\ORM\Association $assoc

属于多方关联的关联类。

array $ids

要加载的 ID 列表。

返回值
arrayCake\Datasource\EntityInterface>

_marshalAssociation() ¶ protected

_marshalAssociation(Cake\ORM\Association $assoc, mixed $value, array<string, mixed> $options): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null

创建一个新的子 marshaller 并编组关联的数据。

参数
Cake\ORM\Association $assoc

要编组的关联

mixed $value

要水合的数据。如果不是数组,此方法将返回 null。

array<string, mixed> $options

选项列表。

返回值
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null

_mergeAssociation() ¶ protected

_mergeAssociation(Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null $original, Cake\ORM\Association $assoc, mixed $value, array<string, mixed> $options): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null

创建一个新的子 marshaller 并合并关联的数据。

参数
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null $original

原始实体

Cake\ORM\Association $assoc

要合并的关联

mixed $value

要水合的数据数组。如果不是数组,此方法将返回 null。

array<string, mixed> $options

选项列表。

返回值
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null

_mergeBelongsToMany() ¶ protected

_mergeBelongsToMany(arrayCake\Datasource\EntityInterface> $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array<string, mixed> $options): arrayCake\Datasource\EntityInterface>

创建一个新的子 marshaller 并合并属于多方关联的关联数据。

参数
arrayCake\Datasource\EntityInterface> $original

原始实体列表。

Cake\ORM\Association\BelongsToMany $assoc

要编组的关联

array $value

要水合的数据

array<string, mixed> $options

选项列表。

返回值
arrayCake\Datasource\EntityInterface>

_mergeJoinData() ¶ protected

_mergeJoinData(arrayCake\Datasource\EntityInterface> $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array<string, mixed> $options): arrayCake\Datasource\EntityInterface>

将特殊的 _joinData 属性合并到实体集中。

参数
arrayCake\Datasource\EntityInterface> $original

原始实体列表。

Cake\ORM\Association\BelongsToMany $assoc

要编组的关联

array $value

要水合的数据

array<string, mixed> $options

选项列表。

返回值
arrayCake\Datasource\EntityInterface>

_normalizeAssociations() ¶ protected

_normalizeAssociations(array|string $associations): array

从原始传递的关联列表中返回一个数组,其中点符号被转换为嵌套数组,以便其他例程可以解析它们

参数
array|string $associations

包含的关联数组。

返回值
array

_prepareDataAndOptions() ¶ protected

_prepareDataAndOptions(array<string, mixed> $data, array<string, mixed> $options): array

返回准备用于验证和编组的数据和选项。

参数
array<string, mixed> $data

要准备的数据。

array<string, mixed> $options

传递给此 marshaller 的选项。

返回值
array

_validate() ¶ protected

_validate(array $data, string|bool $validator, bool $isNew): array

根据传递的选项返回数据集的验证错误。

参数
array $data

要验证的数据。

string|bool $validator

验证器名称或 true 表示默认验证器。

bool $isNew

是否是一个新的实体或要更新的实体。

返回值
array
抛出
RuntimeException
如果无法创建验证器。

dispatchAfterMarshal() ¶ protected

dispatchAfterMarshal(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $options = []): void

分派 Model.afterMarshal 事件。

参数
Cake\Datasource\EntityInterface $entity

已编组的实体。

array $data

要使用的只读 $data。

array<string, mixed> $options optional

只读的选项列表。

返回值
void

many() ¶ public

many(array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>

水合多个实体及其关联数据。

选项

  • validate: 设置为 false 以禁用验证。也可以是字符串,表示要应用的验证器规则集。默认为 true/default。
  • associated: 此处列出的关联也将被编组。默认为 null。
  • fields: 要分配给实体的允许字段列表。如果不存在,将使用实体中的可访问字段列表。默认为 null。
  • accessibleFields: 要在实体可访问字段中允许或拒绝的字段列表。默认为 null
  • forceNew: 启用后,属于多方关联将在设置主键值时创建 'new' 实体,并且记录不存在。通常,缺少实体上的主键将被忽略。默认为 false。
参数
array $data

要水合的数据。

array<string, mixed> $options optional

选项列表

返回值
arrayCake\Datasource\EntityInterface>
另请参阅
\Cake\ORM\Table::newEntities()
\Cake\ORM\Entity::$_accessible

merge() ¶ public

merge(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

将 $data 合并到 $entity 中,并对 $options 中传递的每个关联名称递归执行相同的操作。在合并关联时,如果给定关联中父实体中不存在实体,则将创建一个新实体。

当合并 HasMany 或 BelongsToMany 关联时,$data 数组中的所有实体都会出现,可以通过主键匹配的实体将得到数据合并,而无法匹配的实体将被丢弃。ids 选项可用于确定关联是否必须使用 _ids 格式。

选项

  • associated: 此处列出的关联也将被序列化。
  • validate: 是否在对实体进行水化之前验证数据。也可以设置为字符串以使用特定的验证器。默认为 true/default。
  • fields: 允许分配给实体的字段列表。如果不存在,将使用实体中的可访问字段列表。
  • accessibleFields: 允许或拒绝实体可访问字段的字段列表。

以上选项可以在每个嵌套的 associated 数组中使用。除了以上选项之外,您还可以为 HasMany 和 BelongsToMany 关联使用 onlyIds 选项。当为 true 时,此选项将请求数据限制为仅从 _ids 读取。

$result = $marshaller->merge($entity, $data, [
  'associated' => ['Tags' => ['onlyIds' => true]]
]);
$result = $marshaller->merge($entity, $data, [
  'associated' => [
    'Tags' => [
      'associated' => ['DeeperAssoc1', 'DeeperAssoc2']
    ]
  ]
]);
参数
Cake\Datasource\EntityInterface $entity

将被合并数据的实体

array $data

要合并到实体中的字段的键值列表

array<string, mixed> $options optional

选项列表。

返回值
Cake\Datasource\EntityInterface
另请参阅
\Cake\ORM\Entity::$_accessible

mergeMany() ¶ public

mergeMany(iterableCake\Datasource\EntityInterface> $entities, array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>

将 $data 中的每个元素合并到 $entities 中的每个实体中,并对 $options 中传递的每个关联名称递归执行相同的操作。在合并关联时,如果给定关联中父实体中不存在实体,则将创建一个新实体。

$data 中的记录使用主键列与实体进行匹配。$entities 中无法与 $data 中任何记录匹配的条目将被丢弃。无法匹配的 $data 中的记录将被序列化为新的实体。

当合并 HasMany 或 BelongsToMany 关联时,$data 数组中的所有实体都会出现,可以通过主键匹配的实体将得到数据合并,而无法匹配的实体将被丢弃。

选项

  • validate: 是否在对实体进行水化之前验证数据。也可以设置为字符串以使用特定的验证器。默认为 true/default。
  • associated: 此处列出的关联也将被序列化。
  • fields: 允许分配给实体的字段列表。如果不存在,将使用实体中的可访问字段列表。
  • accessibleFields: 允许或拒绝实体可访问字段的字段列表。
参数
iterableCake\Datasource\EntityInterface> $entities

将被合并数据的实体

array $data

要合并到实体中的数组列表

array<string, mixed> $options optional

选项列表。

返回值
arrayCake\Datasource\EntityInterface>
另请参阅
\Cake\ORM\Entity::$_accessible

one() ¶ public

one(array<string, mixed> $data, array<string, mixed> $options = []): Cake\Datasource\EntityInterface

水合一个实体及其关联数据。

选项

  • validate: 设置为 false 以禁用验证。也可以是字符串,表示要应用的验证器规则集。默认为 true/default。
  • associated: 此处列出的关联也将被编组。默认为 null。
  • fields: 要分配给实体的允许字段列表。如果不存在,将使用实体中的可访问字段列表。默认为 null。
  • accessibleFields: 要在实体可访问字段中允许或拒绝的字段列表。默认为 null
  • forceNew: 启用后,属于多方关联将在设置主键值时创建 'new' 实体,并且记录不存在。通常,缺少实体上的主键将被忽略。默认为 false。

以上选项可以在每个嵌套的 associated 数组中使用。除了以上选项之外,您还可以为 HasMany 和 BelongsToMany 关联使用 onlyIds 选项。当为 true 时,此选项将请求数据限制为仅从 _ids 读取。

$result = $marshaller->one($data, [
  'associated' => ['Tags' => ['onlyIds' => true]]
]);
$result = $marshaller->one($data, [
  'associated' => [
    'Tags' => ['accessibleFields' => ['*' => true]]
  ]
]);
 $result = $marshaller->one($data, [
   'associated' => [
     'Tags' => [
       'associated' => ['DeeperAssoc1', 'DeeperAssoc2']
     ]
   ]
 ]);
参数
array<string, mixed> $data

要水合的数据。

array<string, mixed> $options optional

选项列表

返回值
Cake\Datasource\EntityInterface
另请参阅
\Cake\ORM\Table::newEntity()
\Cake\ORM\Entity::$_accessible

属性详情

$_table ¶ protected

此 marshaller 对应的表实例。

类型
Cake\ORM\Table
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识 & 商标
  • 社区
  • 参与
  • 问题 (Github)
  • 烘焙坊
  • 精选资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻简报
  • 领英
  • YouTube
  • Facebook
  • 推特
  • Mastodon
  • 帮助 & 支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成