在我的symfony项目中,我遇到了由单向OneToOne关系链接的2个实体的问题。我的实体是:俱乐部和地址,俱乐部可以有一个地址。参见下面的实体声明:
分会实体
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并级联{"删除"}即使我很确定这是一个简单的错误,我也无法使其工作。
答案 0 :(得分:1)
尝试使用这种结构:
/**
* @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;
答案 1 :(得分:1)
由于你没有完成这种关系,因此理论中的OneToOne单向关系只管理一方。因此,有两种方法可以保留或删除地址实体,是您使用域事件侦听器还是手动管理您的实体。不幸的是,这两种情况都不是好的做法。