Olá :) Consigo excluir as séries, mas não consigo adicionar novas. O erro:
SQLSTATE[23000]: Integrity constraint violation: 19 FOREIGN KEY constraint failed (SQL: insert into "episodios" ("numero", "temporada_id") values (1, 14))
SeriesController.php:
namespace App\Http\Controllers;
use App\Episodio;
use App\Http\Requests\SeriesFormRequest;
use App\Serie;
use App\Services\CriadorDeSerie;
use App\Temporada;
use Illuminate\Http\Request;
class SeriesController extends Controller
{
public function index(Request $request) {
$series = Serie::query()->orderBy('nome')->get();
$mensagem = $request->session()->get('mensagem');
return view('series.index', compact('series', 'mensagem'));
}
public function create()
{
return view('series.create');
}
public function store(SeriesFormRequest $request, CriadorDeSerie $criadorDeSerie)
{
$serie = $criadorDeSerie->criarSerie(
$request->nome,
$request->qtd_temporadas,
$request->ep_por_temporada
);
$request->session()->
flash('mensagem', "Série {$serie->id} criada com sucesso {$serie->nome}");
return redirect()->route('listar_series');
}
public function destroy(Request $request)
{
$serie = Serie::find($request->id);
$serie->temporadas->each(function (Temporada $temporada) {
$temporada->episodios->each(function (Episodio $episodio) {
$episodio->delete();
});
$temporada->delete();
});
Serie::destroy($request->id);
$request->session()->
flash('mensagem', "Série removida com sucesso");
return redirect()->route('listar_series');
}
}
CriadorDeSerie.php:
namespace App\Services;
use App\Serie;
class CriadorDeSerie
{
public function criarSerie(
string $nomeSerie,
int $qtdTemporadas,
int $epPorTemporada
) : Serie {
$serie = Serie::create(['nome' => $nomeSerie]);
for ($i = 1; $i <= $qtdTemporadas; $i++) {
$temporada = $serie->temporadas()->create(['numero' => $i]);
for ($j = 1; $j <= $epPorTemporada; $j++) {
$temporada->episodios()->create(['numero' => $j]);
}
}
return $serie;
}
}