Error : Method Illuminate\Database\Eloquent\Collection::StudentInfo does not exist. (Laravel 5.6)

Error : Method Illuminate\Database\Eloquent\Collection::StudentInfo does not exist. (Laravel 5.6)

我刚开始加入 table 与 Eloquent。我想加入 3 tables。但它告诉我错误。我的错误是什么,如果有人注意到它会对我有所帮助。这是 tables.... 在第一个 table Applications(id,u_id,program_name) 第二个 table StudentInfos(id,u_id,.....) 3rd table users(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;

  }

当你做 get() 时,它 returns 是一个集合。你可以这样做:

$vu_data = Application::findOrFail($id);
$student = $vu_data->StudentInfo;
$user = $student->User;
$vu_data2 = $vu_data->StudentInfo()->get();

正在返回一个集合,而不仅仅是一个应用程序模型。将 "get()" 更改为 "first()",这将修复您的第一个错误。所以改变:

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

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