Ola vinícius Estou fazendo uma aplicação seguindo a sua aula. Minha aplicação cadastra livros e seus capitulos. O cadastro de livros está ok, agora estou tentando listar os capitulos de um livro e aparece o seguinte erro:
Illuminate \ Database \ QueryException (42S22)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'capitulo.livro_codigo' in 'where clause' (SQL: select * from `capitulo` where `capitulo`.`livro_codigo` = 5 and `capitulo`.`livro_codigo` is not null)
No meu banco a tabela capitulo nao tem o campo livro_codigo (mostrado no erro), nao sei de onde ele pega isso, a FK da tabela capitulo é o campo codigo (mesmo nome do campo na tabela livro). No meu banco, a tabela livro tem os campos: codigo (PK autoincremento), nome, edicao e ano; e a tabela capitulo tem os campos: codigoCap(pk autoincremento), nome, descricao e codigo(fk com livro). Estou usando o mySQL.
Veja os códigos abaixo das classes do model:
<?php
namespace App;
use illuminate\Database\Eloquent\Model;
class Livro extends Model{
// se o nome não for indicado será utilizado o nome da classe no plural iniciado em minúsculo
protected $table = 'livros';
public $timestamps = false;
protected $primaryKey = 'codigo';
protected $fillable=['nome','edicao','ano'];
public function capitulos(){
return $this->hasMany(Capitulo::class);
}
}
?>
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Capitulo extends Model
{
//
protected $table = 'capitulo';
public $timestamps = false;
protected $primaryKey = 'codigoCap';
protected $fillable=['nome','descricao','codigo'];
public function autores(){
return $this->hasMany(Autor::class);
}
public function livro(){
return $this->belongsTo(Livro::class);
}
}
Preciso informar o mapeamento da chave estrangeira em algum lugar? Isso já está dito no mysql.
Obrigada