Ошибка: метод Illuminate \ Database \ Eloquent \ Collection :: StudentInfo не существует.(Ларавел 5.6) - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в создании таблиц соединений с Eloquent.Я хочу присоединиться к 3 таблицам.Но это показывает мне ошибку.В чем моя ошибка, если кто-нибудь заметит, это будет полезно для меня.Вот таблицы .... В 1-й таблице Приложения (id, u_id, имя_программы) 2-я таблица StudentInfos (id, u_id, .....) 3-я таблица пользователей(id, .....)

в модели приложения

public function StudentInfo()
{
    return $this->hasOne('App\StudentInfo', 'u_id', 'u_id');

}

в модели StudentInfo

public function User()
{
    return $this->hasOne('App\user', 'u_id', 'id');

}

от контроллера

 public function view_application($id)
  {
    $vu_data = Application::where('id', $id)->get();
    $vu_data2 = $vu_data->StudentInfo()->get();
    return $vu_data2;

  }

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019
$vu_data2 = $vu_data->StudentInfo()->get();

возвращает коллекцию, а не только одну модель приложения.Измените «get ()» на «first ()», и это исправит вашу первую ошибку.Так что измените:

$vu_data = Application::where('id', $id)->get();

на

$vu_data = Application::where('id', $id)->first();
0 голосов
/ 22 февраля 2019

Когда вы делаете get(), он возвращает коллекцию.Вы можете сделать:

$vu_data = Application::findOrFail($id);
$student = $vu_data->StudentInfo;
$user = $student->User;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...