2017-06-01 83 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和cascade {「remove」},即使我很確定這是一個簡單的錯誤,我也無法使它工作。

+0

你更新了你的數據庫模式嗎? (不知道是哪一個,但刪除註釋之一需要模式更新,如果我正確recal,我被困在這一秒之前)不知道這是否是這裏的情況,但嘗試它 –

回答

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管理只有一面,因爲你沒有完成的關係。所以有兩種方法可以堅持或刪除地址實體,是使用域Event監聽器還是手動管理實體。不幸的是,這兩種情況都不是好的做法。