Как загрузить внешнюю связь laravel 5
Я храню информацию на 4-х дневном занятии. Информация датируется 1-4, и с каждой датой связан инструктор, поскольку в разные дни могут быть разные инструкторы. Давайте пока поговорим о day_1 и instructor_day_1. Мои модели следующие:
Модель курса:
public function instructor()
{
return $this->belongsTo('App\Instructor');
}
Модель инструктора:
public function course()
{
return $this->hasMany('App\Course');
}
Когда я перехожу к методу @show в моем контроллере, я нахожу правильный курс, но когда я пытаюсь загрузить представление, я не могу понять, как получить доступ к иностранному отношению. Прямо сейчас я пытаюсь:
<p class="card-text">{{$course->day_1}} assigned to {{$course->instructor_day_1->instructor->name}}</p>
Но это не дает ничего, кроме ошибок. Если я сделаю {{$course->instructor_day_1}}, я получу правильное значение из базы данных.
Мои отношения задом наперед? Должна ли модель курса быть "принадлежит"? Какой правильный синтаксис для получения информации об инструкторе? Нужно ли мне указывать какие-либо отношения внешнего ключа в моих моделях?
1 ответ
belongsTo
правильные отношения, но они не установлены правильно. И вам понадобится 4 из них, 1 для каждого внешнего ключа на courses
Таблица.
Это должно помочь вам начать:
public function instructorDay1()
{
return $this->belongsTo('App\Instructor', 'instructor_day_1');
}
И тогда вы бы назвали это так, чтобы получить имя инструктора:
$course->instructorDay1->name;
И вам нужно будет сделать это для всех 4 отношений.