[英]Detecting an change after the validation of an Symfony form with an one-to-one relation
我使用Symfony產品表格。 這可以由用戶更改。 用戶保存表單后,我想知道產品中是否有任何更改。
該表格使用產品的實體。 該產品與實體價格具有一對一的關系。 由於折扣價格與多個一對一關系,等等。 price實體具有一組數據,例如priceType
en currency
和value
。
這是一對一的方向,僅從產品到價格。 產品實體具有以下注釋:
/**
* @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
inversedSide
到Product
的price
批注,則您已將其inversedSide
到inversedSide
)。
原則看上去只有在變化owningSide
( inversedBy
注釋)的關系。
一旦切換了這些方面,您就可以計算computeChangeSets
(我真的建議不要這樣做)或做您需要做的任何事情。
對我而言,最好的策略(這不涉及切換關系的邊,即使您應該停下來再考慮是否正確),也應該實現一個Doctrine實體偵聽器並偵聽preUpdate
事件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.