Lo primero que comprobaría es que su función setName está haciendo algo ($ this-> name = $ name ...) Si ya está funcionando, podría definir un detector de eventos en sus servicios .yml que se activa cuando llamas al color.
entity.listener:
class: YourName\YourBundle\EventListener\EntityListener
calls:
- [setContainer, ["@service_container"]]
tags:
- { name: doctrine.event_listener, event: onFlush }
A continuación, se define el EntityListener
namespace YourName\YourBundle\EventListener;
use Doctrine\ORM\Event;
use Symfony\Component\DependencyInjection\ContainerAware;
class EntityListener extends ContainerAware
{
/**
* Gets all the entities to flush
*
* @param Event\OnFlushEventArgs $eventArgs Event args
*/
public function onFlush(Event\OnFlushEventArgs $eventArgs)
{
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
//Insertions
foreach ($uow->getScheduledEntityInsertions() as $entity) {
# your code here for the inserted entities
}
//Updates
foreach ($uow->getScheduledEntityUpdates() as $entity) {
# your code here for the updated entities
}
//Deletions
foreach ($uow->getScheduledEntityDeletions() as $entity) {
# your code here for the deleted entities
}
}
}
Si lo que necesita saber qué entidades están siendo cambiadas, pero hacer algo con ellos después de que han sido guardados en la base de datos, simplemente almacenar el entidades cambiadas en una matriz privada, y luego definen un evento onFlush que obtiene las entidades de la matriz.
BTW, para activar este tipo de eventos necesita agregar @ORM \ HasLifecycleCallbacks en la entidad.
¿Qué intenta lograr al descubrir que una entidad ha cambiado? –
Si nos fijamos en el código fuente de 'UnitOfWork', en los comentarios de' isScheduledForUpdate' dicen "Nota: No es muy útil actualmente ya que las entidades sucias solo se registran en el momento de la confirmación" –
Bueno ... Tengo que enviar un notificación a un usuario del sistema cuando se cambia el producto, pero debería ignorar la notificación cuando los datos del producto no se modifiquen (de todos modos me pongo de color luego de vincular los datos POST de mi formulario a la entidad para usar esa facilidad de Doctrine). Voy a tratar de ejecutar UnitOfWork :: computeChangeSets() antes, tal vez dejar caer el rendimiento pero puedo trabajar. – eagleoneraptor