0

我有一个实体,User用户可以有很多电话号码,所以我有字段:User.numbers和实体Number 用户类型:

->add('numbers', CollectionType::class, array(
    'entry_type' => NumberType::class,
    'by_reference' => false,
    'allow_add' => true,
    'allow_delete' => true,
))

字段编号也使用@Gedmo\SoftDeleteable. 它工作正常 - 当我直接删除电话号码时没关系,电话号码不会被删除,只会标记为已删除。

但是如果我更新用户并且我有 5 个号码,我会删除一个并发送只有 4 个的表单 - 实体管理器会忽略软删除并无论如何都会删除它。

是否可以同时使用孤儿删除和软删除?

4

1 回答 1

-1

这是可软删除组件的预期行为。第一次尝试删除它时,它会将其标记为软删除。如果软删除的项目被标记为删除,它将被永久删除。

您正在提交一个缺少项目的来自,因为它们被 Doctrine 过滤器(软删除)过滤,所以当表单被提交时,项目丢失并被再次标记为删除。

检查: https ://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/lib/Gedmo/SoftDeleteable/SoftDeleteableListener.php#L67

于 2017-12-09T15:13:37.117 回答