Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Não está listando as temporadas e episódios da série

Quando vai para o seasons/index.blade.php não lista temporadas e episódios da série

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

meu github https://github.com/hnhostins/controle-series

notei que no seu exemplo na url tem mais informações Insira aqui a descrição dessa imagem para ajudar na acessibilidade

11 respostas

Como está seu banco de dados? Há algum erro no console?

não está add as temporadas e episódios, só tem 1 insert

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Como está o código de inserção?

copiei o seu seriesController para o meu projeto e deu o erro abaixo.


namespace App\Http\Controllers;

use App\Http\Requests\SeriesFormRequest;
use App\Models\Episode;
use App\Models\Season;
use App\Models\Series;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class SeriesController extends Controller
{
    public function index(Request $request)
    {
        $series = Series::all();
        $mensagemSucesso = session('mensagem.sucesso');

        return view('series.index')->with('series', $series)
            ->with('mensagemSucesso', $mensagemSucesso);
    }

    public function create()
    {
        return view('series.create');
    }

    public function store(SeriesFormRequest $request)
    {
        $serie = Series::create($request->all());
        $seasons = [];
        for ($i = 1; $i <= $request->seasonsQty; $i++) {
            $seasons[] = [
                'series_id' => $serie->id,
                'number' => $i,
            ];
        }
        Season::insert($seasons);

        $episodes = [];
        foreach ($serie->seasons as $season) {
            for ($j = 1; $j <= $request->episodesPerSeason; $j++) {
                $episodes[] = [
                    'season_id' => $season->id,
                    'number' => $j
                ];
            }
        }
        Episode::insert($episodes);

        return to_route('series.index')
            ->with('mensagem.sucesso', "Série '{$serie->nome}' adicionada com sucesso");
    }

    public function destroy(Series $series)
    {
        $series->delete();

        return to_route('series.index')
            ->with('mensagem.sucesso', "Série '{$series->nome}' removida com sucesso");
    }

    public function edit(Series $series)
    {
        return view('series.edit')->with('serie', $series);
    }

    public function update(Series $series, SeriesFormRequest $request)
    {
        $series->fill($request->all());
        $series->save();

        return to_route('series.index')
            ->with('mensagem.sucesso', "Série '{$series->nome}' atualizada com sucesso");
    }
}

deu esse erro Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Suas migrations e/ou relacionamentos nas models parecem estar incorretos.

verifiquei as migrations e relacionamentos nas models e inclusive copiei, estão corretos. mesmo erro, sei q é só no episodes, pois quando o comento pra inserir dá certo.

e utilizei os comandos abaixo: php artisan cache:clear php artisan config:clear php artisan view:clear

meu github https://github.com/hnhostins/controle-series

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

boa tarde Vinícius, refiz tudo novamente, e realmente estou sem entender pq o erro persiste, trabalho na TI dos correios que fez o pacote com vcs, estou gostando muito, mas esse erro me tira até o sono... rs

olha só vou mandar figuras pra entender, coloquei um dd para ver se os valores estavam indo corretamente e vi q sim... Insira aqui a descrição dessa imagem para ajudar na acessibilidade

como o erro fala q falta a coluna season_id na tabela episodes, verifiquei tudo o q vc fez na recriação das migrations, e está, ao menos pra mim, tudo correto. Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAqui a minha migration episodes

<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('episodes', function (Blueprint $table) {
            $table->id();
            $table->unsignedTinyInteger('number');
            $table->foreignId('season_id')->constrained();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('episodes');
    }
};

E uma dúvida que estou tendo, onde é feito o relacionamento do model x migration?

Herlon, no link que eu te enviei mostra que você definiu a tabela para ter uma coluna chamada series_id ao invés de season_id. Como você já rodou a migration, só alterar o código não resolve. Você precisa fazer uma das duas coisas a seguir:

  1. Criar uma nova migration que remova a coluna errada e crie a certa
  2. Fazer o down dessa migration, corrigi-la e fazer o up de novo

Entendi e finalmente consegui para minha alegria e seu alívio kkkkkkkkkkkk

Mas poderia me tirar a dúvida que estou tendo, onde é feito o relacionamento do model x migration? Onde é feito esse relacionamento do um model com a respectiva migration, pois em projetos q trabalho eu faço uma chamada --> $conexao = Oracle::conexao('usuario'); por exemplo e lá já tem tudo no framework para fazer a conexão e chamar a respectiva tabela, isso tudo já vem pronto pra mim, mas aqui no lavaravel onde é feita essa conexão?

solução!

Não existe relacionamento entre model e migration. A migration cria uma tabela. Você pode criar tabelas em suas migrations que não possuem models. Mas a model representa alguma tabela, sempre. Aí qual tabela a model vai representar pode ser só pelo nome da classe ou pelo atributo $table como vimos no curso. :-)