在最新的關於Symfony2的Doctrine試圖找出兩個對象之間的多重雙向關係。主義多重OneToMany/ManyToOne雙向完整性約束違反
個人擁有者對象有一個郵政地址,然後在一個集合中有多個二級地址,我刪除()該人,我希望它的所有地址也被刪除(但刪除一個地址不應該刪除一個人),但我得到這個錯誤 -
An exception occurred while executing 'DELETE FROM address WHERE id = ?' with
params {"1":"fb5e47de-2651-4069-b85e-8dbcbe8a6c4a"}:
[PDOException] SQLSTATE[23000]: Integrity constraint violation: 1451
Cannot delete or update a parent row: a foreign key constraint fails
(`db`.`address`, CONSTRAINT `FK_633704 C29C1004E`
FOREIGN KEY (`person_id`) REFERENCES `person` (`id`))
在
class Person
{
/**
* @var Address postalAddress
*
* @ORM\OneToOne(targetEntity="Address", cascade={"all"}, orphanRemoval=true)
* @ORM\JoinColumn(onDelete="cascade")
*/
private $postalAddress;
/**
* @var \Doctrine\Common\Collections\Collection otherAddresses
*
* @ORM\OneToMany(targetEntity="Address", mappedBy="person", cascade={"all"}, orphanRemoval=true)
*/
private $otherAddresses;
}
class Address
{
/**
* @var Person person
*
* @ORM\ManyToOne(targetEntity="Person", inversedBy="postalAddress, otherAddresses")
* @ORM\JoinColumn(nullable=false)
*/
private $person;
}
我想這可能是因爲
inversedBy="postalAddress, otherAddresses"
我不認爲多重inversedBy是支持;那麼我也試圖改變
@ORM\JoinColumn(nullable=false)
是可以爲空,但我仍然得到錯誤。
這顯然不是微不足道的人物/地址示例,而是更復雜的東西,但這是我對抽象的最佳嘗試。
我確定我錯過了一些明顯的東西。誰能幫忙?
我認爲這個問題可能是因爲你試圖說多對一的OneToOne反而不是ManyToOne。你試過了嗎?* @ORM \ ManyToOne(targetEntity =「Person」,inversedBy =「otherAddresses」)* @ORM \ OneToOne(targetEntity =「Person」) * @ORM \ JoinColumn(nullable = false)''方式學說處理級聯,即使它不改變模式。 – 2013-04-24 19:46:17