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

erro ao inserir na base de dados

erro: SQLSTATE[HY000]: General error: 1 no such table: main.temporada (SQL: insert into "episodios" ("numero", "temporada_id") values (1, 8)) baixei o mesmo codigo da aula 03 no começo, e coloquei os arquivos editados, ta funcionando, só essa parte de adicionar que nao. CreateTemporadasTable <?php

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

class CreateTemporadasTable extends Migration { /**

 * Run the migrations.
 *
 * @return void
 */
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');
    });
}

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

} CreateEpisodiosTable

<?php

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

class CreateEpisodiosTable extends Migration { /**

 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('episodios', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('numero');
        $table->integer('temporada_id');

        $table->foreign('temporada_id')
            ->references('id')
            ->on('temporadas');
    });
}

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

} Episodio <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Episodio extends Model { protected $fillable = ['numero']; public $timestamps = false;

public function temporada()
{
    return $this->belongsTo(Temporada::class);
}

} Temporada <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Temporada extends Model { protected $fillable = ['numero']; public $timestamps = false;

public function serie()
{
    return $this->belongsTo(Serie::class);
}

public function episodios()
{
    return $this->hasMany(Episodio::class);
}

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

} SeriesController <?php

namespace App\Http\Controllers;

use App\Http\Requests\SeriesFormRequest; use App\Serie; 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)
{
    $serie = Serie::create(['nome' => $request->nome]);
    $qtdTemporadas = $request->qtd_temporadas;
    for ($i = 1; $i <= $qtdTemporadas; $i++) {
        $temporada = $serie->temporadas()->create(['numero' => $i]);

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

    $request->session()
        ->flash(
            'mensagem',
            "Série {$serie->id} e suas temporadas e episódios criados com sucesso {$serie->nome}"
        );

    return redirect()->route('listar_series');
}

public function destroy(Request $request)
{
    Serie::destroy($request->id);
    $request->session()
        ->flash(
            'mensagem',
            "Série removida com sucesso"
        );
    return redirect()->route('listar_series');
}

}

1 resposta
solução!

Resolvido é só apagar tudo do banco de dados, e dar um "php artisan migrate" ele nao estava reconhecendo as outras tabelas