Laravel 5 - Eventos do Eloquent Artigo - WebDevBr
Laravel 5 - Eventos do Eloquent Artigo
Este artigo foi publicado a 6 anos, 3 semanas, 4 dias atrás.
Eventos são métodos (functions) que disparam automaticamente sempre que uma determinada ação é executada no seu banco de dados, imagine que você precisa fazer algo sempre que criar um novo registro, por exemplo, sempre que criar um novo usuário você quer criar um novo diretório para arquivos desta pessoa, vamos ver na prática.
Os eventos disponíveis são estes listados a seguir, nem precisava explicar muito, mas vou faze-lo assim mesmo:
creating - Antes de um registro ser criado
created - Depois de um registro ser criado
updating- Antes de um registro ser atualizado
updated - Depois de um registro ser atualizado
saving - Antes de um registro ser atualizado ou criado
saved - Depois de um registro ser atualizado ou criado
deleting - Antes de um registro ser removido
deleted - Depois de um registro ser removido
restoring - Antes de um registro ser restaurado
restored - Depois de um registro ser restaurado
Imagine que estamos registrando aquele usuário do exemplo que dei no início e que terá o diretório criado, quando eu clicar em salvar (para incluir os dados no banco) o evento creating será chamado e depois disse ser feito o created entra em ação, o evento updating não faz nada, afinal ele só funciona quando algo é atualizado, mas o saving e saved funcionam nos dois casos (criar e atualizar), é simples na verdade.
Eventos do Laravel na prática
Vou declarar aqui um Service Provider que vai "ouvir" sempre que o Eloquent fizer algo.
* Inicia qualquer serviço da aplicação.
* retirado direto da documentação
User::created(function ($user) {
$dir = new \WebDevBr\Files\Directory;
$dir->setPath(public_path().'/user/'.$user->id);
$dir->create();
Ou sou do tipo que sempre cria objetos e libraries (leia-se, componentes) sempre que vou fazer algo que eu posso vir a usar novamente, neste caso escrevi o objeto WebDevBr\Files\Directory() que gerencia diretórios pra mim, não importa a implementação deste cara, só que ele sabe criar e remover diretórios.
Posso melhorar ainda mais e sumir com este diretório quando o usuário for removido.
User::deleted(function ($user) {
$dir->remove();
Existem muitas coisas que podem ser feitas usando os eventos do Laravel 5, este foi apenas um exemplo, apenas tome cuidado, com muitos eventos o seu código pode se tornar um pesadelo rapidamente, tente criar objetos e métodos mais específicos possíveis.