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

Validação do Laravel antes de salvar no banco

Olá.

Tenho uma dúvida sobre validação no Laravel.

No meu trabalho desenvolvemos as aplicações com outro framework, o CakePHP.

No Cake temos duas validações, a validação dos dados que vem do formulário, antes de instanciarmos uma entity com estes dados onde podemos fazer a validação do formato dos dados ou tipo, que é semelhante ao que o validate do Laravel faz.

E uma segunda validação antes de salvar a Entity no banco. A documentação se refere a esse segunda validação antes de salvar no banco como Regras de aplicação.

Exemplo de uma regra de aplicação:** Em um post de um blog um usuário não pode fazer mais de um comentário.**

Então o fluxo de validação seria assim:

  1. Recebo os dados do formulário e com estes dados instancio uma Entity e neste momento valido os dados vindos no fomulário se tudo estiver ok o código continua seu fluxo de execução.
  2. Depois de instanciado minha entity e validado os dados chamo o metodo save do Repositorio e passo como parâmetro a intidade que quero persistir no banco, e nesse momento executo a segunda validação (Regras de aplicação) se tudo estiver ok os dados serão persistidos caso contrário será gerado um erro que deve ser tratado e mostrado ao usuário na interface.

Para mais detalhes: https://book.cakephp.org/3/en/orm/validation.html#validating-data

Como eu posso fazer essa regra de aplicação no Laravel? Ex: Em um post de um blog um usuário não pode fazer mais de um comentário.

Sei que a estrutura do Cake (Entities e Repositories) é diferente da do Laravel, mas gostaria de colocar essa segunda validação (Regra de Aplicação) no Model do Laravel e não no FormRequest, porque seria executada antes de persistir os dados já validados no banco. É possível fazer algo assim no Laravel?

Eu dei uma olhada na documentação do Laravel e não encontrei nada que pudesse identificar como algo parecido nesse sentido.

3 respostas
solução!

Rafael, existem inúmeras formas de fazer isso. Para regras de domínio eu não seguiria nem a abordagem do Cake nem do Laravel. Eu faria no código de domínio (como vemos nos cursos de Arquitetura e de DDD).

Mas usando os recursos do Laravel, você pode criar um outro Validator ou ter essas validações direto em mutators do Laravel (que vamos ver em cursos futuros).

Boa tarde Vinicius.

Eu ainda não estudei sobre DDD. Mas está na fila já o estudo desses assuntos.

Já estudei Object Calisthenics e comecei a estudar padrões de projeto.

Obrigado pelos esclarecimentos. Vou dar uma olhada nesses recursos do Laravel que vc mencionou.

Abçs

Show de bola, Rafael. Vou marcar o tópico como solucionado aqui. :-D