OneToOne单向级联= {"坚持","删除"}不工作

时间:2017-06-01 13:46:30

标签: symfony doctrine-orm

在我的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并级联{"删除"}即使我很确定这是一个简单的错误,我也无法使其工作。

2 个答案:

答案 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单向关系只管理一方。因此,有两种方法可以保留或删除地址实体,是您使用域事件侦听器还是手动管理您的实体。不幸的是,这两种情况都不是好的做法。