【问题标题】:symfony2 form - store entity into databasesymfony2 form - 将实体存储到数据库中
【发布时间】:2015-10-08 17:53:36
【问题描述】:

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

$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". 

欢迎任何帮助。

【问题讨论】:

  • persist 是一个Entity Manager 方法,而不是一个php函数

标签: php forms symfony


【解决方案1】:

$em=persist ... 应该是$em->persist(...);

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

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @vonbrand 我认为它确实很好地回答了这个问题(特别是关于已提出的具体错误) - 这是一个代码错字。
  • 请使用 cmets 提出澄清问题。不要将它们包含在答案正文中。
【解决方案2】:

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

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

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

【讨论】:

  • 好的我明白了,有一种方法可以自动创建数据库表或让我手动创建它,
  • 需要将表定义为实体类。实体类定义了表的结构,实体的每个实例代表表中的一行。假设您要走 Doctrine 路线,请参阅此页面:symfony.com/doc/current/book/doctrine.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2013-11-18
相关资源
最近更新 更多