Pesquisei várias formas de resolver este desafio:
"Vou deixar um desafio para você, não é necessário, mas o desafio é remover a linha $serie = $this->repository->add($request); e criar outro listener, que vai criar a série. Ao longo do desenvolvimento você vai encontrar diversos problemas, visto que vai precisar do ID que teríamos que ter já, então, fica o desafio para tentar encontrar uma solução para esses problemas, ou seja, adicionar a série em outros listener ao invés de executar no SeriesController."
Mas acredito que tudo o que preciso seria uma forma de obter o valor do próximo ID de uma tabela com autoincrement. Pensei que poderia pegar o valor do id máximo com:
FacadesDB::select("SELECT LAST(ID) FROM 'series'"))->get()
e somar +1. Porém, uma tabela com autoincrement torna cada id único e não atribuível a um novo elemento mesmo que seja deletado. E não quero mudar isso.
Seria o caminho por aqui: https://laravel.com/docs/5.1/queries#Auto-Incrementing-IDs ? Não tenho certeza pois acredito que isso cria um ciclo.
- Devo adicionar a série usando um listener X, e, depois de adicioná-la, usar o listener X como um evento para os listeners de Email e Log?
- Sendo que somente o listener de Email precisa do ID da série, posso excluir o parâmetro
seriesId
do evento SeriesCreated e usar o código abaixo para obtê-lo somente no listener de Email?
$id = DB::table('series')->insertGetId(
['nome' => $event->seriesName]
);
Por acaso existe um jeito melhor e mais simples?