我是新接触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;
}
答案 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;