【发布时间】:2012-01-01 17:13:54
【问题描述】:
现在我将 Doctrine2 与 Symfony2 结合使用。我有一个名为“OrderRequest”的实体,其中包含对另一个名为“OrderRequestPerson”的条目类型的两个引用(这些是订购者和接收者字段)。在我的表单中,用户可以选择设置 orderer = receiver 或填写接收者信息。
在这种特定情况下我有一个错误:订单放置在 orderer = receiver 的位置,因此在数据库中 orderer 和 receiver 字段具有相同的值(在这种情况下为 15,指的是 OrderRequestPerson id)。如果管理员将订单更新到订购者!= 接收者的位置,我需要更新接收者字段。目前,实体管理器将更新 id 为 15 的 OrderRequestPerson,从而更新订购者和接收者。有没有办法告诉 Doctrine2 / Symfony2 为接收者创建一个新条目,带有一个新的 id 并将信息放入该条目而不是更新订购者信息?
我的代码贴在下面:
// Get the entity manager.
$em = $this->getDoctrine()->getEntityManager();
// Grab the order.
$order = $em->getRepository('OrderRequestBundle:OrderRequest')
->getOrder($id);
// Get important information.
$request = $this->getRequest();
// Create the OrderRequest form.
$form = $this->get('form.factory')->create(new OrderRequestType(), $order);
// Fill the form with the request information.
$form->bindRequest($request);
// Save the information.
$em->flush();
【问题讨论】:
-
嗯。这可能意味着在绑定任何东西之前,您必须克隆订购者并将克隆设置为接收者。试试这样的。
标签: php symfony doctrine-orm entitymanager