2017-06-20 61 views
1

我在Laravel把一个简单的报告卡系统作为一个学习工具。目前我有一个Pupil表,一个Subject表和一个Pupil_Subject数据透视表,由id, pupil_id, subject_id,grade列组成。如何从此表中获取所需的列?

我的瞳孔和主体模型关系都设置为belongsToMany。但是,如果我运行,例如,在$pupil = App\Pupil::find(1)->subjects廷克,我得到下面的输出:

Illuminate\Database\Eloquent\Collection {#729 
    all: [ 
     App\Subject {#726 
     id: 1, 
     subjectname: "English", 
     pivot: Illuminate\Database\Eloquent\Relations\Pivot {#731 
      pupil_id: 1, 
      subject_id: 1, 
     }, 
     }, 
     App\Subject {#728 
     id: 2, 
     subjectname: "Maths", 
     pivot: Illuminate\Database\Eloquent\Relations\Pivot {#730 
      pupil_id: 1, 
      subject_id: 2, 
     }, 
     }, 
    ], 
    } 

随着瞳孔(1)无学生信息,并在subjects无级柱的迹象。我究竟做错了什么?

回答

2

如果您需要同时获得PupilSubject对象,请使用eager loading

$pupil = App\Pupil::with('subjects')->find(1); 
+0

谢谢,这工作,但我如何访问数据透视表中的每个条目的'grade'财产? – user4676723

+2

@ user4676723您应该在关系中使用'withPivot()'方法,然后遍历'subjects'并使用' - > pivot-> grade'获取属性。 https://laravel.com/docs/5.4/eloquent-relationships#many-to-many –

+0

工作过一次,感谢 – user4676723