We have three entities:
- MaterialAssigned
- Stock
- Job
MaterialAssigned
holds three fields:
- Quantity (int)
- Relation with a
Job
Entity - Relation with a
Stock
entity
We are try to write a preUpdate()
on MaterialAssigned which takes old and new Quantity
values, do some calculation and update the overall total quantity in the related Stock
Entity.
When we var_dump()
values along our logic, everything seems to work as expected, however the related Stock
entity never gets updated.
That's the relevant code from the EventListener:
public function preUpdate(PreUpdateEventArgs $eventArgs)
{
$entity = $eventArgs->getEntity();
if ($entity instanceof MaterialAssigned) {
$changeArray = $eventArgs->getEntityChangeSet();
$pre_quantity = $changeArray['quantity'][0];
$post_quantity = $changeArray['quantity'][1];
// Here we call the function to do the calculation, for testing we just use a fixed value
$entity->getStock()->setTotal(9999);
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
$meta = $em->getClassMetadata(get_class($entity));
$uow->recomputeSingleEntityChangeSet($meta, $entity);
}
}