Cake php обновление связанных входных данных создает дублирующиеся записи - PullRequest
0 голосов
/ 04 августа 2020

У меня есть две таблицы, которые связаны стратегиями и стратегиями_условиями. У стратегий может быть много Strategy_conditions.

Я обновил стратегии add.php некоторыми javascript, чтобы я мог добавить стратегию_conditions на ту же страницу et c. Все работает отлично.

Я хочу иметь возможность редактировать стратегии_conditions одновременно на стратегиях edit.php Я могу oop и добавлять правильные связанные входы strategy_conditions с их значениями, но моя проблема заключается в том, что вместо обновления strategies_conditions он создает новые записи. Странно, потому что торт php распознает детали, потому что он имеет правильные значения во входных данных.

вот торт php код внутри стратегий edit.php шаблон

<?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; ?> 

1 Ответ

1 голос
/ 04 августа 2020

Если вы хотите редактировать связанные записи, вы должны также указать первичный ключ для этих записей.

Для родительского элемента первичный ключ не обязательно нужен, как обычно передается в URL-адресе (ie /strategies/edit/1) и используется для получения родительской сущности, которая исправляется данными формы.

Однако для связанных записей таких данных нет нигде, поэтому вам необходимо явно передать его вместе с остальными данными записи, чтобы маршаллер мог идентифицировать и исправлять существующие сущности / записи, иначе вы получите новые сущности без первичного ключа, например новые записи.

Предполагая, что первичный ключ равен id:

echo $this->Form->hidden('strategies_conditions.' . $key . '.id');
echo $this->Form->control('strategies_conditions.' . $key . '.name', array(
    'label' => false
));

См. Также

...