我正在尝试撰写一个非常基本的表单,它能够插入和更新数据库中的记录。 我的问题是,每次按下“保存”按钮,都会在数据库中创建一个新行。 你能否指出我的源代码中的问题?
控制器:http://pastebin.com/YjMAdHqp
路由:http://pastebin.com/WSV6xCSw
数据库中的id列是一个自动增量整数。
感谢任何想法。
答案 0 :(得分:1)
您的问题的正确答案是使用合并方法而是坚持。 e.g:
$your_entity = $form->getData();
$this->em->merge($your_entity); // MERGE not PERSIST
$this->em->flush();
了解有关合并方法的更多信息
干杯,
答案 1 :(得分:-1)
if ($id == 0) {
$task = new Task();
}
您的ID参数默认为0,并且创建了一个新任务,而不是更新现有的尝试。
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