2016-10-26 15 views
0

私はManyToOne関係を持つ2つのエンティティを持っています。私が子供を削除するときには、親に他の子がバインドされていない場合にのみ親を削除したい。子供がいなければ親を削除

しかし、私はそれを行う方法を理解していません。カスケード削除を行うと、Doctrineは子を削除するときに親を削除しようとしますが、それには他の子があるので、constrainstエラーがあります。 orphanRemovalを使用すると、子どもが多方面にいるためにできません。片側に置くと、親は直接削除されません。

答えて

0

子を削除する前に親を検索し、子を削除した後に親の残っている子をチェックしていない場合は、親も削除しますか?

$parent = $child->getParent(); 
//remove $child 
if(count($parent->getChildren())==0){ 
    //delete $parent 
} 
+1

私はpreRemove/postRemoveサブスクライバでこれを行うことができると思います。しかし、おそらくDoctrineに直接他の解決策がありますか? – mpiot

+1

私は見つけていないし、決して他のソリューションを利用していない。あなたが言ったように、あなたはorphanRemovalもカスケードも使うことができないので、この方法で行かなければなりません。 – GiuServ

関連する問題