symfony2表单 - 将实体存储到数据库中

时间:2015-10-08 17:53:36

标签: php forms symfony

我正在尝试使用以下代码将表单的某些字段存储到数据库中:

$data = $form->getData();
$em=$this->getDoctrine()->getManager();
$em=persist($data->getCompany());
$em->flush();
return $this->redirectToRoute('target_success');}

但我得到以下错误:

Attempted to call function "persist" from namespace "site\formBundle\Controller". 

欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

$em=persist ...应为$em->persist(...);

此外,我想知道它是否会起作用。 getCompany()是否会返回实体?

答案 1 :(得分:0)

$ em-> persist()必须有一个实体对象的实例作为其参数。持久化操作告诉Doctrine您希望将此实体写入数据库。你不能给一个单独的字段persist(),它写入整个对象。您似乎也在尝试将表单写回数据库。您需要将表单传递给实体对象,然后将该对象持久保存到数据库。你有没有创建一个实体类?

我不确定为什么你需要逐个将字段写回数据库(这是一个非常奇怪的要求)。

我建议任何代码都没有意义,因为不清楚你是否有实体课程,所以我只能建议你好好阅读Symfony's simple form guide。这将向您展示如何定义实体,如何创建表单,如何将提交的表单复制回实体对象,以及如何将实体对象写入数据库。