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