2017-06-20 5 views
1

Ich stelle ein einfaches Berichtskartensystem in Laravel zusammen, nur als Lernwerkzeug. Zur Zeit habe ich eine Pupil Tabelle, eine Subject Tabelle, und eine Pupil_Subject Pivot-Tabelle bestehend aus id, pupil_id, subject_id, und grade Spalten.Wie kann ich die erforderliche Spalte aus dieser Tabelle abrufen?

Ich habe die Schüler und Subject Modell Beziehungen beide auf belongsToMany festgelegt. Allerdings, wenn ich laufe, zum Beispiel $pupil = App\Pupil::find(1)->subjects in Tinker, erhalte ich die folgende Ausgabe:

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, 
     }, 
     }, 
    ], 
    } 

Ohne Schüler Informationen für Schüler (1), und kein Zeichen der Klasse Spalte in subjects. Was mache ich falsch?

Antwort

2

Wenn Sie beide Pupil und Subject Objekte erhalten müssen, verwenden Sie eager loading:

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

Danke, das funktioniert, aber wie kann ich auf die 'grade' Eigenschaft jeder Eintrag in der Pivot-Tabelle? – user4676723

+2

@ user4676723 sollten Sie 'withPivot()' Methode in Ihrer Beziehung verwenden und dann über 'Themen' iterieren und die Eigenschaft mit '-> pivot-> grade 'erhalten. https://laravel.com/docs/5.4/eloquent-relationships#many-to-many –

+0

Arbeitete ein Vergnügen, danke – user4676723

Verwandte Themen