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

Lógica de negócio com acesso ao banco na Model ou Controller?

Minha dúvida é a seguinte: Todo o acesso ao banco (inserts, deletes, etc) está sendo feito pela Controller usando o eloquent. Mas, no caso, até agora só o crud. Se eu quiser implementar uma lógica que, por exemplo, quando eu for inserir um registro numa tabela, o sistema gere um código baseado em algo que está no banco de dados, como um MAX(id) e realize alguns tratamentos pra gerar uma nova informação dinamicamente pra eu passar junto dos parâmetros de inserção.

Essa lógica ficaria dentro da minha model ou da minha controller?

4 respostas

Bom dia Fábio! Geralmento a boa prática nos diz que devemos isolar as responsabilidades das classes, neste caso, como você quer implementar uma lógica 'a mais' para a inserção, o melhor seria usar um helper, é uma boa saída.

http://laravel.io/forum/02-03-2015-best-practices-for-custom-helpers-on-laravel-5?page=1

Olá Douglas, valeu pela resposta. Mas só para entender então: Eu criaria um helper contendo a função que eu preciso? Porque utilizar um helper e não um método de alguma das classes que eu já utilizo?

solução!

Para isolar responsabilidades. Ex: ''' class Produto extends algumaOutra { public function venda(){ $venda= //buscando dados da venda; $db->insere();//só um exemplo Email::envia(); //um bom exemplo é que o código de envia e-mail, fica isolado, não é responsabilidade da classe Produto saber a logica de enviar e-mail. } } ''' Qualquer duvida manda aí. Esse conceitos são mais bem explicados nos cursos de patterns.

Saquei! Entendi man, vou dar uma conferida nesses cursos também. Valeu mesmo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software