如何防止EntityManager删除(Doctrine Assocation)

时间:2016-06-15 15:29:46

标签: php mysql symfony doctrine cascade

我遇到了以下问题:

我有一个实体查询与客户的一对一,单向关联:

/**
 * @var Customer
 *
 * @ORM\OneToOne(targetEntity="Customer", cascade={"persist"}, fetch="EAGER")
 * @ORM\JoinColumn(name="Customer", referencedColumnName="id", onDelete="SET NULL", nullable=true)
 */
protected $customer;

如果我通过数据库后端(PhpMyAdmin)删除客户,那么一切都很好:现场客户设置为空,但如果我用EntityManager删除客户对象,那么查询也会被删除,为什么?

$em = $this->getDoctrine()->getManager();
$em->remove($customer);
$em->flush();

我只想将其设置为null。

抱歉我的英文不好,我希望有人可以提供帮助;)

许多问候

1 个答案:

答案 0 :(得分:1)

您注释映射错误。 试试这个

/**
* @ORM\ManyToOne(targetEntity="Customer")
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $customer;