Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

State, Memento e BD

Bom dia pessoal, tudo certo ?

Sempre tive esta dúvida pois ainda não consegui aplicar e/ou imaginar a situação.

No caso do state, como funcionaria a sua aplicação relacionada ao banco de dados ? Por exemplo, se utilizarmos um framework como o Doctrine(PHP) ou Hibernate(Java), qual seria a implementação para sabermos que o ENUM 'x' deverá retornar uma classe específica para aquele state ?

E no caso do memento, qual seria a melhor estrutura para armazenarmos este histórico ? Seria utilizada a mesma tabela (Contrato) ou seria criado uma tabela auxiliar com as informações duplicadas ?

Obrigado, abraços!

4 respostas
solução!

Oi Felipe tudo bom? sobre como salvar um enum, geralmente quando o orm for mapeado ele vai mapear para a classe que representa o enum, como isso vai ser salvo no banco depende de cada framework por exemplo no doctrine você precisa adicionar uma notação:

/** @Entity */
class Pedido
{
    /** @Column(type="enumVisibilidade") */
    private $visibilidade;
}

Ai ele sabe quais valores aquela coluna aceita baseado nas constantes definidas na classe enumVisibilidade.

Sobre o memento e como salvar o histórico, podemos mapear esse histórico para outra tabela com um relacionamento many to one em relação a entidade principal, assim podemos navegar pelo histórico.

Qualquer dúvida estou a disposição.

Abraços e bons estudos.

Fala Renan, boa tarde!

O 'type' customizado já consegui fazer, a minha maior dúvida não era em relação aos valores esperados, mas sim a um valor 'x' automaticamente instanciar uma nova classe com comportamentos específicos... O valor 'y' seria outra classe e assim por diante, até encontrei algumas implementações para isso mas achei que iria aumentar muito a complexidade do código. Como já sabemos, PHP não tem suporte nativamente a ENUM (sem as classes SPL).

Obrigado pelo retorno, foi esclarecedor!

Abraços.

Sem usar as classes SPL não tem muito como fugir de simular um enum usando uma classe normal e adicionar algumas constantes estáticas dentro... Infelizmente.

Fico feliz em ter ajudado, posso marcar a dúvida como solucionada? Abraços.

Já marquei Renan, desculpa não ter feito isto antes.

Obrigado pela atenção, abraços!