【问题标题】:Embeed forms - inserting to database嵌入表单 - 插入数据库
【发布时间】:2017-06-07 02:21:28
【问题描述】:

我根据 Workbench 中生成的 ER 模型自动创建了两个实体(使用本手册 http://symfony.com/doc/2.8/doctrine/reverse_engineering.html)。我的意图是创建一对一的关系,但注释显示它是一对多的关系。我还创建了嵌入表单。我想将客户端和新地址插入数据库。我仍然收到错误:

通过关系“UlaBundle\Entity\Client#adres”找到了一个新实体,该实体未配置为对实体:qqq 进行级联持久化操作。解决此问题:在此未知实体上显式调用 EntityManager#persist() 或配置级联在映射中保持此关联,例如 @ManyToOne(..,cascade={"persist"})。

即使我设置了 @ManyToOne(..,cascade={"persist"}) 和 __toString 函数,也会显示错误。问题是什么?请帮忙。在我的代码下面:

///客户实体

class Client
{
/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=45, nullable=true)
 */
private $name;

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

/**
 * @var \UlaBundle\Entity\Adres
 *
 * @ORM\ManyToOne(targetEntity="UlaBundle\Entity\Adres", cascade= {"persist"})
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="adres_id", referencedColumnName="id")
 * })
 */
private $adres;

/// 地址实体

class Adres
{
/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=45, nullable=true)
 */
private $name;

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

///控制器

/**
 * @Route("/client", name="client")
 */
public function clientAction(Request $request) {
    $c = new Client();
    $form = $this->createForm(ClientType::class,$c);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $m = $this->getDoctrine()->getManager();
        $m->persist($c);
        $m->flush();

        return new Response('Added');
    }
    return $this->render('UlaBundle:Default:client_form.html.twig', array('form' => $form->createView()));
}

【问题讨论】:

    标签: symfony doctrine


    【解决方案1】:

    我认为您的问题来自 cascade= {"persist"} 中的空白,您应该将其删除

    /**
     * @var \UlaBundle\Entity\Adres
     *
     * @ORM\ManyToOne(targetEntity="UlaBundle\Entity\Adres", cascade={"persist"})
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="adres_id", referencedColumnName="id")
     * })
     */
    private $adres;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 2017-06-14
      • 2021-05-02
      • 1970-01-01
      • 2013-05-01
      相关资源
      最近更新 更多