use Doctrine\ORM\Event\LifecycleEventArgs; class EventListener { public function postPersist(LifecycleEventArgs $args) { $entity = $args->getEntity(); if($entity instanceof Only\In\Listener\Entity) return; $entityManager = $args->getEntityManager(); $entity = new Only\In\Listener\Entity(); //... $entityManager->persist($entity); $entityManager->flush(); } }イベントリスナー内で登録されるEntityクラスの登録がイベントの発生源となった場合に、instanceofで判定し、returnすれば良い。
21世紀のライフスタイルに合った新しい装束 ―
日本標準機構では、日本の装束をカジュアルにアレンジして販売しています。
狩衣(かりぎぬ)、直衣(のうし)、直垂(ひたたれ)などを現代のライフスタイルに合わせてより着やすく、よりカジュアルに。
カジュアル装束の販売は
日本標準機構
2017年9月19日火曜日
postPersist内でpersist()とflush()を呼びたい時の無限再帰を止める方法
イベントリスナーのpostPersist内でEntityManagerがpersist()とflush()を呼ぶと、そのためにイベントリスナーのpostPersistが呼ばるため、無限の再帰となりOutOfMemoryException等が発生する。もし、イベントリスナー内で登録したいEntityクラスがあらゆる場所でそのイベントリスナーを呼ぶ必要がない場合には、無限の再帰を止める方法がある。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿