我正在尝试使用以下代码将表单的某些字段存储到数据库中:
$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".
欢迎任何帮助。
答案 0 :(得分:1)
$em=persist ...
应为$em->persist(...);
此外,我想知道它是否会起作用。 getCompany()
是否会返回实体?
答案 1 :(得分:0)
$ em-> persist()必须有一个实体对象的实例作为其参数。持久化操作告诉Doctrine您希望将此实体写入数据库。你不能给一个单独的字段persist(),它写入整个对象。您似乎也在尝试将表单写回数据库。您需要将表单传递给实体对象,然后将该对象持久保存到数据库。你有没有创建一个实体类?
我不确定为什么你需要逐个将字段写回数据库(这是一个非常奇怪的要求)。
我建议任何代码都没有意义,因为不清楚你是否有实体课程,所以我只能建议你好好阅读Symfony's simple form guide。这将向您展示如何定义实体,如何创建表单,如何将提交的表单复制回实体对象,以及如何将实体对象写入数据库。