2017-06-01 8 views
1

私のsymfonyプロジェクトでは、単方向のOneToOne関係でリンクされた2つのエンティティに問題があります。私の主体は以下のとおりです:クラブと住所、クラブには住所があります。怒鳴るエンティティ宣言を参照してください。OneToOne単方向カスケード= {"persist"、 "remove"}が動作しない

クラブエンティティ

class Club{ 
/** 
* @ORM\OneToOne(targetEntity="FFPM\MainBundle\Entity\Address", cascade={"persist", "remove"}, orphanRemoval=true) 
* @ORM\JoinColumn(name="address_id", referencedColumnName="id", nullable=true) 
*/ 
protected $address; 

... 

} 

住所エンティティ

class Address{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

... 

} 

何らかの理由で、私はクラブを削除する場合に、アドレスがデータベースに残ります。私はorphanRemovalとカスケード{"remove"}で試してみましたが、私はかなり単純な間違いだと確信しても動作させることはできません。

+0

dbスキーマを更新しましたか? (どちらか確かではありませんが、注釈を削除するにはスキーマの更新が必要ですが、正しくリコールすれば、前にもう一度thisforにぶら下がっていました)これがここに当てはまるかどうかわかりませんが、それを試してください –

答えて

0

てみ使用この建設:

 /** 
    * @ORM\OneToOne(targetEntity="FFPM\MainBundle\Entity\Address", mappedBy="entidad", cascade={"persist", "remove"}) 
    * @ORM\JoinColumn(name="address_id", referencedColumnName="id", onDelete="CASCADE", nullable=true) 
    **/ 
    private $personaFisica; 
+0

私がそうするならば、私が住所を削除するたびにクラブを削除することを確信しています。しかし、私はまったく反対ではありません。 onDelete = "CASCADE"は逆の面にあるはずです。私は単方向関係にあるので、私は持っていない –

0

関係OneToOne unidirectionnal教義では、あなたが関係を完了していないので、片側のみを管理します。したがって、アドレスエンティティを永続化または削除するには、ドメインイベントリスナを使用するか、エンティティを手動で管理するという2つの方法があります。残念ながら、どちらのケースも良い習慣ではありません。

関連する問題