Events para Doctrine
Galera, estou com uma duvida em doctrine, será que alguem poderia me ajudar.
Eu tenho 3 campos sendo (data exclusao, data alteração e data inclusão), porém eu tenho q trabalhar de uma forma dinamica com eles para não ficar remontando o código, eu estou usando o metodo eventos do doctrine sendo eles, preRemove, prePersist e preUpdate, sendo que o preRemove eu vou atualizar o campo data exclusão prePersist o campo de cadastro e o preUpdate o campo de alteração.
Porem os campos inicio e alteração da entidade está dando certo, so que quando eu vou para o preRemove não está, ele esta duplicando o registro e isso não é o que eu gostaria, alguem poderia me ajudar?
Segue abaixo o meu código do evento.
<?php
namespace User\Event;
use Zend\ServiceManager\ServiceManager;
use Zend\Authentication\AuthenticationServiceInterface;
use User\Entity;
class Events
{
protected static $TEMPO_UPDATE;
private $sm;
public function __construct(ServiceManager $sm){
$this->sm = $sm;
}
private function getUsuario(){
$authService = $this->sm->get(AuthenticationServiceInterface::class);
if($authService->hasIdentity()){
return $authService->getIdentity();
}
}
public function preRemove($eventArgs){
$entity = $eventArgs->getEntity();
$em = $eventArgs->getEntityManager();
if (method_exists($entity, 'setDtExc')) {
self::$TEMPO_UPDATE = $entity->getDtAlt();
$entity->setDtAlt(-1);
$entity->setDtExc(TEMPO);
$em->persist($entity);
$em->flush($entity);
$em->detach($entity);
}
if (method_exists($entity, 'setUsuario') && !$entity instanceof Entity\Usuario && !$entity instanceof Entity\UsuarioPermissao && !$entity instanceof Entity\Grupo && !$entity instanceof Entity\GrupoPermissao) {
$entity->setUsuario($this->getUsuario());
}
}
public function prePersist($eventArgs)
{
$entity = $eventArgs->getEntity();
if (method_exists($entity, 'setDtIni')) {
$entity->setDtIni(TEMPO);
}
if (method_exists($entity, 'setUsuario') && !$entity instanceof Entity\Usuario && !$entity instanceof Entity\UsuarioPermissao && !$entity instanceof Entity\Grupo && !$entity instanceof Entity\GrupoPermissao) {
$entity->setUsuario($this->getUsuario());
}
}
public function preUpdate($eventArgs)
{
$entity = $eventArgs->getEntity();
if (method_exists($entity, 'setDtAlt')) {
switch($entity->getDtAlt()){
case -1:
$entity->setDtAlt(self::$TEMPO_UPDATE);
break;
default:
$entity->setDtAlt(TEMPO);
}
}
if (method_exists($entity, 'setUsuario') && !$entity instanceof Entity\Usuario && !$entity instanceof Entity\UsuarioPermissao && !$entity instanceof Entity\Grupo && !$entity instanceof Entity\GrupoPermissao) {
$entity->setUsuario($this->getUsuario());
}
}
}
?>Discussão (0)
Carregando comentários...