Jump to content
Bruno Henrique da Costa

Events para Doctrine

Recommended Posts

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());
        }
    }
}

?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By daniramon
      Olá pessoal, tudo bem?
       
      Sou novato em PHP, e preciso criar a seguinte função.
       
      Meu problema: 
      - Recebo os seguintes parâmetros: (total de alunos & número de pessoas por grupo).
      - Preciso definir um número ideal de pessoas por grupo, sem deixar nenhum grupo desfalcado. 
      - Mínimo de 4 pessoas por grupo;
      <?php $totalUsers = 50; $usersPerGroup = 6; $minPerGroup = 4; ?>  
      $var = $totalUsers / $usersPerGroup;
       
      Na simulação acima, terei 7 grupos com 6 pessoas, e um grupo com 1,4 pessoas..rs.
       
      Gostaria, que a função me retornasse, em um mundo ideal:
       
      7 grupos com 6 pessoas = 42 pessoas
       
       2  grupos com 4 pessoas = 8 pessoas
      <?php return $array = [ 7 => 6, 2 => 4]; ?>  
      Alguém poderia me ajudar na criação desta função, please...
    • By Carcleo
      Parece brincadeira, mas estou fazem 3 dias tentando instalar a cURL e não consigo
      Windows 10 Pro Apache 2.4 Php 7.3.4 MySQL 8.0.15.0 Tentativas:
      1) libeay32.dll, msvcr71.dll, ssleay32.dll e php_curl.dll coladas na pasta system32 e adicionadas ao PATH do Windows 2) Baixei a biblioteca cURL do site https://curl.haxx.se/, cliquei em curl.exe e nada acontece. 3) ;extension=CURL e ;extension=php_curl.dll descomentadas no php.ini (Embora a linha ;extension=php_curl.dll não exista nessa versão do PHP eu inserí ela na lista) 4) Confirmado de que o php.ini é o correto.  Agora só faltam 2 tentativas
       
      A) Apelar para a fé.
      B) Instalar Apache e PHP antigos pois lembro-me que usei em um projeto fazem uns anos e funcionava de boa.
           Mas não gostara de voltar no tempo.
       
      Claro que essas 2 foram só para descontrair!
       
      Alguém me ajuda? Ode estou errando?
    • By terra
      Olá,
       
      Preciso pegar o valor desse select
       
       
       aqui nessa query
       
       
      Agradeço qualquer ajuda
    • By violin101
      Caros amigos, saudações...
       
      Gostaria de tirar uma dúvida com os amigos se tem a possibilidade de fazer e como fazer.
       
      A pasta MODELS tem como fazer separado como a pasta CONTROLLERS, por exemplo:
       
      a pasta controller consigo fazer assim: PASTA e SUBPASTAS.
       
      controller
      |__ Admin
      |_____ Estoque
      |_______ Financeiro
       
      na pasta Models, fica tudo junto as funções, como por exemplo:
      admin_model.php
      caixa_model.php
      vendas_model.php
      e etc
       
      na Models, tem como fazer como na pasta controller, assim:
      |__ Admin
           |__ admin_model.php
      |_____ Estoque
                 |__ estoque_model.php
      |_______ Financeiro
                    |__ caixa_model.php
       
      para chamar uma função no controller, faço desta forma: 
      <?php $this->load->model('categorias_model'); $this->data['categorias'] = $this->categorias_model->getActive('categorias', 'categorias.idCategorias,categorias.categoria'); ?>  
      Conforme minha dúvida acima, como seria o caminho para chamar esta função:   
      $this->load->model('categorias_model');
       
       
      Grato,
       
      Cesar
    • By Samuel Pietro
      Tenho um select em PDO e preciso que a consulta retornada vire uma variavel, mas a variavel só pega a ultima linha da tabela e eu preciso que pegue todas as linhas que existirem.
       
      $conexao = conexao::getInstance(); $sql = 'SELECT * FROM RegistroE'; $stm = $conexao->prepare($sql); $stm->execute(); $Sql = $stm->fetchAll(PDO::FETCH_OBJ); foreach ($Sql as $SqlReg): $conteudo_meio = picture_X($SqlReg->E_01,1) .picture_X($SqlReg->E_02,25) .picture_9($SqlReg->E_03,4) .picture_X($SqlReg->E_04,14) .picture_9($SqlReg->E_05,8) .picture_9($SqlReg->E_06,8) .picture_9($SqlReg->E_07,8) .picture_9($SqlReg->E_08,8) .picture_9($SqlReg->E_09,8) .complementoRegistro(96,"brancos") .picture_9($SqlReg->E_11,1) .complementoRegistro(1,"brancos") ; endforeach; Como eu poderia está fazendo isto?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.