Symfony表单集合和条令从集合中删除所有子项(不需要)
我有两个实体Symfony表单集合和条令从集合中删除所有子项(不需要),symfony,doctrine-orm,orm,Symfony,Doctrine Orm,Orm,我有两个实体order和orderdetail。它们通过一对多关系连接 Order.php /** * @ORM\OneToMany(targetEntity="App\Entity\OrderDetail", mappedBy="order", fetch="EXTRA_LAZY", orphanRemoval=true, cascade={"persist", "remove"}) */ private $orderDetails; OrderDetail.php /** * The
order
和orderdetail
。它们通过一对多关系连接
Order.php
/**
* @ORM\OneToMany(targetEntity="App\Entity\OrderDetail", mappedBy="order", fetch="EXTRA_LAZY", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $orderDetails;
OrderDetail.php
/**
* The order this detail is in.
*
* @ORM\ManyToOne(targetEntity="App\Entity\Order", inversedBy="orderDetails")
*/
private $order;
编辑订单时,我希望能够删除一个或多个详细信息并保存订单。细节本身不应该存在
我到目前为止所做的事情
我添加了orphandremovation=true
以确保细节本身不存在,并添加了cascade={“persist”,“remove”}
,以便可以从订单中删除细节
在我的订单表单OrderType.php中,我添加了带有选项'allow\u delete'=>true的嵌入式for,
->add('orderDetails', CollectionType::class, array(
'entry_type' => OrderDetailType::class,
'entry_options' => array('label' => false),
'allow_delete' => true,
'required' => false,
'by_reference' => false,
))
我添加了一些jQuery,以便能够删除一个orderDetail
,但这并不相关,因为如果没有它,我会遇到同样的问题,即:
每当我编辑订单并保存时,所有订单详细信息都会从该订单中删除并从数据库中删除。
奇怪的是,如果我在刷新所有内容之前将我的order
对象转储到控制器中,它看起来应该是这样的。此刻$entityManager->flush()当问题发生时,执行代码>
对控制器的更改没有任何效果。即使我删除了控制器中几乎所有的代码,我也删除了jQuery,我编辑了一个订单而不碰任何东西,然后保存;所有详细信息都将被删除
你能告诉我是什么导致了这种行为以及如何改变这种行为吗 我找出了问题的原因。我在订单详细信息
中有禁用的表单字段。我的浏览器未将这些禁用的字段发送到服务器。这导致教条将这些孩子带走。在这个问题上进行了一些讨论
为了保持无法更改但仍然可见的字段,我删除了disabled
属性,并将属性readonly=>true
添加到这些表单字段中,我的问题得到了解决