错误:方法Illuminate \ Database \ Eloquent \ Collection :: StudentInfo不存在。 (Laravel 5.6)

时间:2019-02-22 16:33:16

标签: laravel laravel-5 laravel-5.2

我是新接触Eloquent的联接表的人。我想加入3张桌子。但这显示了错误。我的错是什么,如果有人注意到这会对我有帮助。这是桌子... 在第一张表 Applications(id,u_id,program_name)中第二张表 StudentInfos(id,u_id,.....)在第三张表 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;

  }

2 个答案:

答案 0 :(得分:1)

$vu_data2 = $vu_data->StudentInfo()->get();

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

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

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

答案 1 :(得分:0)

执行get()时,它将返回一个集合。你可以做:

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