1

我正在尝试编写一个非常基本的表单,它能够在数据库中插入和更新记录。我的问题是每次按下保存按钮时,都会在数据库中创建一个新行。你能指出我源代码中的问题吗?

控制器: http: //pastebin.com/YjMAdHqp

路由: http: //pastebin.com/WSV6xCSw

数据库中的 id 列是一个自增整数。

感谢您的任何想法。

4

2 回答 2

1

您的问题的正确答案是使用合并方法而不是持久化。例如:

$your_entity = $form->getData();
$this->em->merge($your_entity); // MERGE not PERSIST
$this->em->flush();

您可以在官方文档中阅读有关 Merge Method 的更多信息

干杯,

于 2014-02-09T10:25:44.877 回答
-1
  if ($id == 0) {
    $task = new Task();
  }

您的 ID 参数默认为 0,并且会创建一个新任务,而不是更新现有的 tast。

hello_index:
    pattern: /hello/index/{id}
    defaults: { _controller: AcmeHelloBundle:hello:index, id:0 }

您应该单独创建和编辑/更新操作,并为每个操作创建一个路由。

http://symfony.com/doc/2.0/book/doctrine.html#updating-an-object

于 2012-10-29T04:33:43.577 回答