在 Symfony2 的最新 Doctrine 中,试图找出两个对象之间的多个双向关系。
个人所有者对象在一个集合中有一个邮政地址,然后有多个辅助地址,我删除()这个人,我希望它的所有地址也被删除(但删除一个地址不应该删除一个人),但我收到此错误 -
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)
可以为空,但我仍然得到错误。
这显然不是关于琐碎的 Person/Address 示例,而是更复杂的示例,但这是我在抽象方面的最佳尝试。
我确定我错过了一些明显的东西。任何人都可以帮忙吗?