嘿伙计,所以我有两个实体,双向的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对象,我只希望销售中的TransportInvoice参数为null。我不理解的是什么?
如果不清楚请告诉我,谢谢你的帮助!
答案 0 :(得分:0)
我认为问题在于关系设计。在您的示例中,Sale是主要实体,因此不需要transport_invoice引用。 TransportInvoice.php中的“sale”引用就是该学说所需要的,因此请再次尝试编辑Sale。
/**
* @var TransportInvoice
*
* @ORM\OneToOne(targetEntity="WKDA\Common\Entity\Car\TransportInvoice\TransportInvoice", mappedBy="sale")
*/
protected $transportInvoice;
我希望它可以帮到你。