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
添加到这些表单字段中,我的问题得到了解决