簡體   English   中英

原則:雙向的一對一關系,兩個實體均被刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM