Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao criar chaves estrangeiras [Lumen]

Olá, Estou com ao problema abaixo na hora de executar o 'php artisan migrate'.

Este é o erro:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `episodes` add constraint `episodes_seri  
  e_id_foreign` foreign key (`serie_id`) references `id` (`series`))   
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

Tive o mesmo problema no curso de Laravel e bastou adicionar o métododo unsigned() nas chaves estrangeiras, mas nesse caso não foi o suficiente.

    public function up()
    {
        Schema::create('series', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
        });
    }
    public function up()
    {
        Schema::create('episodes', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('season');
            $table->bigInteger('number');
            $table->boolean('watched')->default(false);
            $table->bigInteger('serie_id')->unsigned();
            $table->foreign('serie_id')->references('series')->on('id');
        });
    }

Ele consegue criar todas as migrations até acontecer este problema nas foreing keys.

3 respostas

Fala, Matheus.

O mapeamento da foreign key é:

  • references: o nome do campo
  • on: o nome da tabela.

Então, ficaria assim:

$table->foreign('serie_id')->references('id')->on('series');

Provavelmente no meu caso no vídeo esse código funcionou com o mapeamento errado devido ao fato do SQLite estar com as chaves estrangeiras desabilitadas no momento.

Vou adicionar um exercício pra corrigir isso.

Olá, demorei mas acabei reparando nisso também, obrigado!

solução!

Adicionei um "Para saber mais" lá. Valeu, Matheus.

Pode marcar esse tópico como solucionado.

:-D