私は2つのエンティティ:User
とSkill
を持っています。Symfony 2:条件に関係を追加/更新するそうでなければそれを削除する
これらは多対多の関係でリンクされています。 この関係UserSkill
には、rating
のような追加情報が含まれています。この評価は、0から10
に行く私は評価は、私は評価は私が0
- ある任意の関係を持っている必要はありません。
:更新された評価は、私はこのコードを含むprePersistし、更新前イベントを作成しましたが、それは動作しません0$expertisesRatings = $entity->getUserSkillsRatings(); foreach($skillRatings as $skillRating) { $rate = $skillRating->getRating(); if ($rate < 1) { $user->removeUserSkill($skillRating); $skillRating->setTalent(null); } }
になったときにリレーションを削除
何もしません。 私はpreUpdateイベントでリレーションを操作することができないので、onFlushやonPreFlushを使用する必要があるのか、まったく別のアプローチを使用する必要があるのだろうと思っています。
私は十分な詳細を与えたかったです。 ありがとうございます。
あなたは 'rating'のセッターでそれを直接扱うことができます。あなたが正しく述べたように、 'prePersist'を待つことは、実際には遅れることです。 –
onFlushリスナーは正常に動作し、良いアプローチだと思います。 – Richard