嘿,伙计们,我有两个具有双向OneToOne关系的实体:
Sale.php
/**
* @var TransportInvoice
*
* @ORM'OneToOne(targetEntity="WKDA'Common'Entity'Car'TransportInvoice'TransportInvoice", mappedBy="sale")
* @ORM'JoinColumn(name="transport_invoice", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
protected $transportInvoice;
TransportInvoice.php
/**
* @var Sale
* @ORM'OneToOne(targetEntity="WKDA'Common'Entity'Car'Sale", inversedBy="transportInvoice", cascade={"persist"}, orphanRemoval=true)
* @ORM'JoinColumn(name="sale", referencedColumnName="id", nullable=false)
*/
protected $sale;
在我的控制器中,要从销售中删除运输发票,请执行以下操作:
$transportInvoice = $car->getSale()->getTransportInvoice();
$em = $this->getEntityManager();
$em->remove($transportInvoice);
$em->flush();
这会删除TransportInvoice,但也会删除Sale对象。我不希望删除Sale对象,我只希望Sale中的TransportInvoice参数为null。我有什么不明白的?
如果这还不清楚,请告诉我,谢谢你的帮助!
我认为问题出在关系设计上。在您的示例中,"销售"是主要实体,因此不需要"运输发票"参考。TransportInvoice.php中的"sale"引用就是该原则所需的全部内容,因此请按照重试的方式编辑sale。
/**
* @var TransportInvoice
*
* @ORM'OneToOne(targetEntity="WKDA'Common'Entity'Car'TransportInvoice'TransportInvoice", mappedBy="sale")
*/
protected $transportInvoice;
我希望它能帮助你。