Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

View para Listar Temporadas

View para listar as temporadas não aparece as temporadas, fica todo em branco.

11 respostas

Olá, Aluízio.

Preciso de mais detalhes pra poder te ajudar. rs

TemporadasController


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'));

    }
}

Index para listar temporadas

@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->numero }}</li>
        @endforeach
    </ul>

@endsection

Mas quando eu chego clico no link para me redirecionar para essa página index, ela traz o nome certinho lá em cima Temporadas de "Daredevil" , mas não lista as temporadas abaixo.

Aluízio, seu código parece certinho.

Logo depois da definição da variável $temporadas no Controller, coloca essa linha:

dd($temporadas);

Vê se a coleção tem algum dado.

Se não tiver, verifica o mapeamento do relacionamento entre suas séries e temporadas na model Serie.

Coloquei como você pediu essa linha dd($temporada). E ele me retornou isso:

Illuminate\Database\Eloquent\Collection {#270 ▼
  #items: []
}

2 coisas:

  1. Dá uma olhada no seu banco de dados pra ver se existem temporadas criadas pra essa série
  2. Se existirem no banco de dados, vê se o relacionamento na sua classe Serie tá certo
  1. Sinceramente não sei como verifica as tabelas e as colunas do banco de dados.

  2. E eu já mapeei classe Série e está tudo tranquilo, tenho quase certeza que não estão sendo inseridos no banco de dados.

Fiz algumas alterações aqui no código no SeriesController, e quando tento adicionar ele me dá esse erro:

SQLSTATE[HY000]: General error: 1 table temporadas has no column named numero (SQL: insert into "temporadas" ("numero", "serie_id") values (1, 30)) 

Ele até adiciona, vai pra lista de séries adicionada, mas fica em branco quando peço para listar as temporadas.

Opa. Parece que você não rodou as migrations corretamente para criar a coluna numero na tabela de temporadas.

Como está sua migration de criar a tabela temporadas?

Segue abaixo a Migration de criar a tabela temporadas:


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTemporadasTable extends Migration
{
    public function up()
    {
        Schema::create('temporadas', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('numero');
            $table->integer('serie_id');

            $table->foreign('serie_id')
                ->references('id')
                ->on('series');
        });
    }
    public function down()
    {
        Schema::dropIfExists('temporadas');
    }
}
solução

Aluízio, mais uma vez, parece tudo certo. Tenta rodar as migrations de novo, do zero, com:

php artisan migrate:fresh

Isso vai apagar todas as suas tabelas e recriar. Vê se todos os campos estão sendo criados corretamente...

Vinicius, boa tarde.

Fiz o que você falou, testei novamente e já está aparecendo. Provavelmente ele não tinha criado as tabelas.

Obrigado pela atenção.