Rob*_*rto 3 forms orm cakephp cakephp-3.0
我的问题非常简单:表单数据应该如何(即名称键应该是什么样子)来使用patchEntities()?
我已阅读 Cookbook > Database Access & ORM > Saving Data > Converting Multiple Records,但它没有明确提及如何使用它。
这种结构适用于newEntities():
$data = [
'0' => ['field1' => '...', /* ... */],
'1' => ['field1' => '...', /* ... */],
'2' => ['field1' => '...', /* ... */]
];
Run Code Online (Sandbox Code Playgroud)
使用如下形式:
<?= $this->Form->input('0.field1', /* ... */) ?>
<?= $this->Form->input('1.field1', /* ... */) ?>
...
Run Code Online (Sandbox Code Playgroud)
但是,相同的结构但 with'id.field1'不会对patchEntities().
表单数据看起来应该相同,但它应该包含记录主键,以便编组器可以将数据映射到相应的记录上。表单输入中的前导数字不是主键 (id),而只是生成的数组索引。
文档也可以使用一些更新来包含patchEntities(),现在只有一小部分隐藏在“ Patching HasMany 和 BelongsToMany ”部分中。
Cookbook > 数据库访问和 ORM > 保存数据 > 修补 HasMany 和 BelongsToMany
所以表格应该是这样的:
<?= $this->Form->input('0.id', /* ... */) ?>
<?= $this->Form->input('0.field1', /* ... */) ?>
<?= $this->Form->input('1.id', /* ... */) ?>
<?= $this->Form->input('1.field1', /* ... */) ?>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
产生一个数据集,如:
$data = [
'0' => ['id' => '...', 'field1' => '...', /* ... */],
'1' => ['id' => '...', 'field1' => '...', /* ... */],
// ...
];
Run Code Online (Sandbox Code Playgroud)
然后可以在给定的实体上修补:
$original = $this->Table->find()->toArray();
$patched = $this->Table->patchEntities($original, $data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |