Я сделал несколько поисков, но все же я не могу это решить, я кодирую небольшой сайт библиотеки для обучения, и я не могу заставить отношения работать. (Забронировать = книга, Autore = автор, жанры = жанр)Laravel 5 eloquent relationship возвращает пустое или нулевое значение, но код выглядит нормально
В моем повозиться команда
$libro->autore
возвращает нуль или пустой, даже если я буду называть его как метод и использовать ToArray
это мой код:
Libro модель
namespace App;
использование Illuminate \ Database \ Eloquent \ Model;
class Libro extends Model
{
protected $table = 'libri';
protected $fillable = ['titolo', 'id_autore', 'pubblicazione', 'trama', 'voto', 'image_url', 'id_genere'];
public function genere() {
return $this->belongsTo('App\Genere');
}
public function autore() {
return $this->belongsTo('App\Autore');
}
}
Autore Модель
namespace App;
use Illuminate\Database\Eloquent\Model;
class Autore extends Model
{
protected $table = 'autori';
protected $fillable = ['nome', 'cognome', 'nascita', 'paese'];
public function libri() {
return $this->hasMany('App\Libro');
}
public function getFullNameAttribute()
{
return $this->nome . " " . $this->cognome;
}
}
Соотношение в моей миграции
$table->foreign('id_autore')->references('id')->on('autori');
$table->foreign('id_genere')->references('id')->on('generi');
Я добавил внешние ключи в БД MySQL, проверить, что на PHPMyAdmin, но до сих пор, это не работает, что я делаю неправильно?
** добавить больше ответов Тинкеров попробовать ауты ** Если я стараюсь:
>>> App\Autore::find(2)->libri()->get()
я получаю:
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'libri.autore_id' in 'where clause' (SQL: select * from `libri` where `libri`.`autore_id` = 2 and `libri`.`autore_id` is not null)'
Если я пытаюсь:
$libro-autore()
Я получаю :
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::autore()'
вместо
$libro->autore
остается
null
Вы можете добавить логику контроллера. – Carlos
Я использую tinker для показа содержимого, я не понимаю, в чем смысл вставки контроллера, который только делает вещи для просмотров – K3nzie
вы пробовали $ libro-> autore() – Carlos