Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lista de Temporadas não é exibida na tela

Olá! Não estou conseguindo exibir a lista de temporadas... Não gera nenhum erro mas também não está criando a tabela com a lista das temporadas da série...

Esse é meu temporadas\index.blade.php:

@extends('layout')

@section('cabecalho')
    Temporadas de {{ $serie->nome }}
@endsection

@section('conteudo')
    <ul class="list-group">
        @foreach ($temporadas as $temporada)
            <li class="list-group-item">Temporada {{ $temporada->numero }}</li>
        @endforeach
    </ul>
@endsection

Essa é minha TemporadasController:

<?php

namespace App\Http\Controllers;

use App\Serie;
use Illuminate\Http\Request;

class TemporadasController extends Controller
{
    public function index(int $serieId)
    {
        $serie = Serie::find($serieId);
        $temporadas = $serie->temporadas;

        return view(
            'temporadas.index',
            compact('serie', 'temporadas')
        );
    }
}

E essa é a Route:

Route::get('/series/{serieId}/temporadas', 'TemporadasController@index');
1 resposta
solução!

Olá pessoal. Acredito que consegui resolver... Eu estava com um pequeno erro no meu laço do 'for' que criava os episódios da serie. Estava assim antes:

<?php

namespace App\Services;
use App\Serie;

class CriadorDeSerie
{
    public function criarSerie(
        string $nomeSerie, 
        int $qtdTemporadas, 
        int $epPorTemporada) : Serie
    {
        $serie = Serie::create(['nome' => $nomeSerie]); //indica que deve atualizar somente o nome no banco
        for ($i = 1; $i <= $qtdTemporadas; $i++) { //laço para poder criar uma relação entre cada temporada e a série
            $temporada = $serie->temporadas()->create(['numero' => $i]);

            for ($j = 1; $j <= $epPorTemporada; $j++) {
                $temporada = $temporada->episodios()->create(['numero' => $j]);
            }
        }

        return $serie;
    }
}

Corrigido ficou assim:

<?php

namespace App\Services;
use App\Serie;

class CriadorDeSerie
{
    public function criarSerie(
        string $nomeSerie, 
        int $qtdTemporadas, 
        int $epPorTemporada) : Serie
    {
        $serie = Serie::create(['nome' => $nomeSerie]); //indica que deve atualizar somente o nome no banco
        for ($i = 1; $i <= $qtdTemporadas; $i++) { //laço para poder criar uma relação entre cada temporada e a série
            $temporada = $serie->temporadas()->create(['numero' => $i]);

            for ($j = 1; $j <= $epPorTemporada; $j++) {
                $temporada->episodios()->create(['numero' => $j]);
            }
        }

        return $serie;
    }
}

Então havia uma variável '$temporada' a mais no segundo 'for', removendo ela o laço ficou correto e agora exibe a lista na tela.

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