Symfony2 SoftDeleteableを一時的に無効化して、物理削除したい
PHP: 5.5.7
Symfony: 2.8.3
Doctrine拡張のSoftDeleteableを導入しています。
物理削除したい場面もありフィルタを無効にして試みるのですが、なぜだかうまくいきません。
SoftDeleteable
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md
SoftDeleteableフィルタを無効にして削除
php
1$em->getFilters()->disable('soft-deleteable'); 2$em->remove($entity); 3$em->flush($entity); 4$em->getFilters()->enable('soft-deleteable');
とするのですが、DELETED_AT
に値が入って論理削除となってしまいます。
とりあえず現在はQueryBuilderから削除するようにしてます。
追記 論理削除エンティティを削除すると物理削除される
php
1$em->getFilters()->disable('soft-deleteable'); 2$em->remove($entity); 3$em->flush($entity); 4$em->remove($entity); 5$em->flush($entity); 6$em->getFilters()->enable('soft-deleteable');
調査した結果。
remove
して論理削除されたエンティティをさらにremove
すると物理削除されるようです。(謎)
ということで物理削除が必要なときは二重に削除してあげればうまくいきそうです。
どうしてこんな挙動になっているのか、わからないので分かる方教えていただけるとうれしいです。
ブログ記事の方も更新致しました。
http://www.starlod.net/symfony2-gedmo-softdeleteable.html
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。