2017-12-27 66 views
1

私は2つのエンティティActivityとBulleManagerを持っています。私はOneToMany - ManyToOneを使用してそれらの関係を調べます。問題は、BulleManagerエンティティの行を削除すると、アクティビティエンティティ内の関連する行も削除され、それが好きな動作ではないということです。所有サイド(BulleManager)エンティティが削除されたときに逆の側のエンティティ(アクティビティ)に "NULL"を設定するだけです。Doctrine symfony OneToMany - ManyToOne関係でエンティティを削除します

class Activities 
{ 
    /** 
     * @ORM\ManyToOne(targetEntity="BulleManager", 
     cascade={"persist"}, inversedBy="activities") 
    * @ORM\JoinColumn(name="bulle_manager_id", 
    referencedColumnName="id", nullable=true, onDelete="SET NULL") 
    */ 
    protected $bulleManager; 
... 
} 

class BulleManager 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="Activities", 
    mappedBy="bulleManager", cascade={"remove"}) 
    */ 
    private $activities; 
} 

あなたのソリューションは大歓迎です。

答えて

2

BulleManagerエンティティからcascade={"remove"}を削除するだけです。

cascade={"remove"}は、レコードが親テーブル(BulleManager)で削除された場合、子テーブル(アクティビティ)のすべての従属レコードを削除します。

BulleManagerが削除された場合、アクティビティテーブルでbullemanager_idNULLに設定されます。

そして、使用してデータベーススキーマを更新するのを忘れないでください:

php bin/console doctrine:schema:update 
+0

闘争は、私は= BulleManagerから{「削除」}カスケードを削除すると、削除がで効果を持っていないということですBulleManagerエンティティのデータベース(行は削除されません)。 ** FYI **私はdoctrineのremove()メソッドを使用してエンティティを削除します。 – Heri

+0

ああ、それは動作します。実際には、問題はカスケードや関係からではなく、コントローラーのコードと同じです。とにかく、ありがとうございました。 – Heri

+0

問題ありません。ありがとう –

関連する問題