2017-12-08 3 views
0

は私が持っているエンティティ、Userおよびユーザは、多くの電話番号を持っているので、私はフィールドを持っている:User.numbersと実体Number のUserType:symfonyの - orphanRemovalとSTOF Softdeleteable

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

フィールド数も@Gedmo\SoftDeleteableを使用しています。それはうまく動作します - 私は直接電話番号を削除しているときにはOKですが、電話番号は削除されず、削除済みとしてマークされます。

しかし、ユーザを更新して5つの番号がある場合は、1つを削除し、4つだけのフォームを送信します。エンティティマネージャはソフト削除を無視して、それを削除します。

オーファン除去とソフトデリートを併用することは可能ですか?

+0

は、孤児除去は、特に、一致する親レコードせずに削除ハードデシベルレコードに書き込まれます。 –

+0

いいえ、Gedmo \ SoftDeleteableはOrphanRemovalで動作しません。問題リストを参照してください。 –

答えて

0

これは、ソフト削除可能コンポーネントの予想される動作です。初めて削除しようとすると、削除されたソフトマークとしてマークされます。ソフト削除されたアイテムがマークされて削除されると、それは完全に削除されます。

Doctrineフィルタによってフィルタリングされた場所(ソフト削除された場所)に、不足しているアイテムを送信しています。フォームが送信されてアイテムが欠落し、再度マークされるとマークされます。

チェック:私は恐れていないよ https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/lib/Gedmo/SoftDeleteable/SoftDeleteableListener.php#L67

関連する問題