[英]Doctrine: bidirectional OneToOne relationship, both entities being deleted
大家好,我有2個具有雙向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。 我不明白什么?
如果不清楚,請告訴我,謝謝您的幫助!
我認為問題在於關系設計。 在您的示例中,銷售是主要實體,因此不需要transport_invoice參考。 該理論所需的全部是TransportInvoice.php中的“銷售”參考,因此請編輯“銷售”,然后再次嘗試。
/**
* @var TransportInvoice
*
* @ORM\OneToOne(targetEntity="WKDA\Common\Entity\Car\TransportInvoice\TransportInvoice", mappedBy="sale")
*/
protected $transportInvoice;
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.