Doctrine/MySQLプロジェクトでは、ManyToMany
の関係でリンクされた2つのエンティティがあります。Doctrine/MySQLでの "孤立した"孤児の除去
Client
エンティティ:
class Client
{
[...]
/**
* @ORM\ManyToMany(targetEntity="ClientTag")
* @ORM\JoinTable(name="clients_tags")
*/
protected $tags;
}
そしてClientTag
エンティティ:
class ClientTag
{
[...]
/**
* @ORM\Column(type="string", length=45)
*/
protected $label;
/**
* @ORM\Column(type="string", length=7)
*/
protected $color;
}
だから私は1つのタグに複数のクライアントを関連付ける機能、およびその逆、偉大なを持っています。
しかし、私は自動的に方法を見つけることができませんそれを参照しているクライアントがなくなったときにタグを削除します。
私はManyToMany
注釈にorphanRemoval
を使用しようとしましたが、それは私が.. 孤児除去は、私が上記正確に何を意味するものでなければならないが、その親への参照が削除されたとき、それはタグを削除し、ないと思った何をしません。私が必要とするような他のエンティティを考慮して。
クライアントがタグを削除したにもかかわらず、このタグがまだ2つの他のクライアントによって使用されている場合は、まだ参照するエンティティが1つ以上あるため、「orphan」とはみなされません。
もちろん、私は親を見つけることができない場合、クエリを実行してそれを削除することでケースを解決することができますが、DoctrineまたはMySQLにこれを行うための方法が組み込まれているのだろうか(もっと最適化されます)?
ありがとうございました。
これがあなたの質問に答えるかどうか疑問です。 [双方向多対多カスケード削除と孤立削除操作](http://www.inanzzz.com/index。php/post/h0jt/bidirectional-many-to-many-cascade-remove-and-orphan-removal-operations-doctrine) – BentCoder
私は恐れていません。彼は私の問題がどこにない接合部テーブルについて話しています。 **彼が例として持っているエンティティを使用して**、 私は 'tournament'を削除する方法を探しています。それは、「孤児の除去」が私に聞こえるようなものです。「この他のエンティティとの関係がなくなると、このエンティティを削除してください」。 – Stnaire