Cakephp 更新关联的输入会创建重复的记录
Cakephp updating associated inputs creates duplicated records
我有两个表是相关策略和strategy_conditions。策略可以有很多strategy_conditions.
我已经用一些 javascript 更新了策略 add.php
以便我可以将 strategy_conditions 添加到同一页面等。一切都很好。
我希望能够在策略上同时编辑 strategies_conditions edit.php
我可以循环并添加正确的关联 strategies_conditions 输入及其值但是我的问题是,它不是更新 strategies_conditions
,而是创建新记录。奇怪,因为 cakephp 识别细节,因为它在输入中有正确的值。
这是策略edit.php
模板中的cakephp代码
<?php foreach ($strategy->strategies_conditions as $key=>$strategiesConditions) : ?>
<tr>
<td>
<?php echo $this->Form->control('strategies_conditions.'.$key.'.name', array( 'label' => false )); ?>
</td>
</tr>
<?php endforeach; ?>
如果您想编辑关联记录,那么您必须还提供这些记录的主键。
父实体不一定需要主键,因为它通常在URL(即/strategies/edit/1
)中传递,并用于获取正在修补的父实体表单数据。
然而,对于关联记录,其他任何地方都没有此类数据,因此您需要将其与记录的其余数据一起显式传递,以便编组器可以识别和修补现有的 entities/records,否则你最终会得到没有主键的新实体,例如新记录。
假设主键是id
:
echo $this->Form->hidden('strategies_conditions.' . $key . '.id');
echo $this->Form->control('strategies_conditions.' . $key . '.name', array(
'label' => false
));
另见
我有两个表是相关策略和strategy_conditions。策略可以有很多strategy_conditions.
我已经用一些 javascript 更新了策略 add.php
以便我可以将 strategy_conditions 添加到同一页面等。一切都很好。
我希望能够在策略上同时编辑 strategies_conditions edit.php
我可以循环并添加正确的关联 strategies_conditions 输入及其值但是我的问题是,它不是更新 strategies_conditions
,而是创建新记录。奇怪,因为 cakephp 识别细节,因为它在输入中有正确的值。
这是策略edit.php
模板中的cakephp代码
<?php foreach ($strategy->strategies_conditions as $key=>$strategiesConditions) : ?>
<tr>
<td>
<?php echo $this->Form->control('strategies_conditions.'.$key.'.name', array( 'label' => false )); ?>
</td>
</tr>
<?php endforeach; ?>
如果您想编辑关联记录,那么您必须还提供这些记录的主键。
父实体不一定需要主键,因为它通常在URL(即/strategies/edit/1
)中传递,并用于获取正在修补的父实体表单数据。
然而,对于关联记录,其他任何地方都没有此类数据,因此您需要将其与记录的其余数据一起显式传递,以便编组器可以识别和修补现有的 entities/records,否则你最终会得到没有主键的新实体,例如新记录。
假设主键是id
:
echo $this->Form->hidden('strategies_conditions.' . $key . '.id');
echo $this->Form->control('strategies_conditions.' . $key . '.name', array(
'label' => false
));
另见