簡體   English   中英

在驗證具有一對一關系的Symfony表單后檢測更改

[英]Detecting an change after the validation of an Symfony form with an one-to-one relation

我使用Symfony產品表格。 這可以由用戶更改。 用戶保存表單后,我想知道產品中是否有任何更改。

該表格使用產品的實體。 該產品與實體價格具有一對一的關系。 由於折扣價格與多個一對一關系,等等。 price實體具有一組數據,例如priceType en currencyvalue

這是一對一的方向,僅從產品到價格。 產品實體具有以下注釋:

 /**
 * @ORM\OneToOne(targetEntity="Price")
 * @ORM\JoinColumn(name="price_sales_id", referencedColumnName="id")
 */
private $priceSales;

保存並驗證表單后,我使用以下代碼進行比較:

$uow = $em->getUnitOfWork();
$uow->computeChangeSets();
$changeSet = $uow->getEntityChangeSet($product);

$changeSet對象返回在產品中所做的更改,但不返回在一對一關系中所做的更改。 有沒有辦法檢測相關實體中的更改?

首先, 切勿使用computeChangeSets()因為您將要更改UnitOfWork ,這可能會造成很大的麻煩。

其次,我非常確定Product是您與Price關系的inversedSide (您可以通過檢查批注來驗證它:如果已將mappedBy inversedSideProductprice批注,則您已將其inversedSideinversedSide )。

原則看上去只有在變化owningSideinversedBy注釋)的關系。

一旦切換了這些方面,您就可以計算computeChangeSets (我真的建議不要這樣做)或做您需要做的任何事情。

對我而言,最好的策略(這不涉及切換關系的邊,即使您應該停下來再考慮是否正確),也應該實現一個Doctrine實體偵聽器並偵聽preUpdate事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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