我正在尝试编写一个非常基本的表单,它能够在数据库中插入和更新记录。我的问题是每次按下保存按钮时,都会在数据库中创建一个新行。你能指出我源代码中的问题吗?
控制器: http: //pastebin.com/YjMAdHqp
路由: http: //pastebin.com/WSV6xCSw
数据库中的 id 列是一个自增整数。
感谢您的任何想法。
我正在尝试编写一个非常基本的表单,它能够在数据库中插入和更新记录。我的问题是每次按下保存按钮时,都会在数据库中创建一个新行。你能指出我源代码中的问题吗?
控制器: http: //pastebin.com/YjMAdHqp
路由: http: //pastebin.com/WSV6xCSw
数据库中的 id 列是一个自增整数。
感谢您的任何想法。
您的问题的正确答案是使用合并方法而不是持久化。例如:
$your_entity = $form->getData();
$this->em->merge($your_entity); // MERGE not PERSIST
$this->em->flush();
您可以在官方文档中阅读有关 Merge Method 的更多信息
干杯,
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