Как загрузить внешнюю связь 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 отношений.

Другие вопросы по тегам