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

Método filter

Porque o método filter ficou no model? O correto não seria ficar no controller?

public function getEpisodiosAssistidos(): Collection
    {
        return $this->episodios->filter( function (Episodio $episodios) {
            return $episodios->assistido;
        });
    }

Desde já agradeço.

3 respostas

Fala, Jean.

Nosso Controller só deveria ter a entrada e saída dos dados pra web.

Toda regra de negócios deveria ficar em algum outro lugar. Seja em Model, Service, Repository, etc.

NUNCA coloque regra de negócios no Controller.

:-)

Boa tarde professor,

Estava fazendo confusão com esses conceitos, pensava que as regras de negócios deveriam ficar no controller, agora faz sentido.

Outra dúvida, se eu declarar tudo no model não tem motivo pra charmar os services pelo controller, seria uma boa pratica?

solução!

Não entendi sua dúvida, Jean.

O que você quer dizer com declarar tudo no model?

O Laravel não te "instiga" a seguir boas práticas da orientação a objetos, mas num projeto bem arquitetado, normalmente temos:

  • Value Objects (objetos simples só com simples regras de autovalidação)
  • Entidades (que podem possuir Value Objects e possuem regras de negócio)
  • Domain Services (que possuem as regras de negócio que envolvem mais de uma entidade)
  • Application Services (que só executam chamadas pra outras classes e orquestram determinada ação no sistema (cadastrar um usuário, por exemplo))
  • Repositories (que cuidam do acesso à camada de persistência e transportam as entidades)

Tem muito mais coisa, mas isso aí é um bom início. Seu Controller só deve receber os dados, e mandar o trabalho pra outras classes. Se for uma regra simples, talvez não precise de um Application Service (se for só dar um find, ou create).