2017-05-16 2 views
0

Mein Studenten ModellWie kann ich eine Beziehung zwischen zwei Modellen erstellen und die Modellinformationen über den Controller an die Ansicht weitergeben?

/** 
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
*/ 
public function fathers() 
{ 
    return $this->belongsTo('App\Models\Father'); 
} 

Mein StudentController

/** 
* Display the specified resource. 
* 
* @param ManageStudentRequest $request 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function show(ManageStudentRequest $request, $id) 
{ 
    $student = Student::with('fathers')->find($id); 

    return view('students.show')->withStudent($student); 
} 

Und meine Klinge Ansicht

<tr> 
    <th>NOMBRE</th> 
    <td>{{ $student->father->first_name }} {{ $student->father->last_name }}</td> 
</tr> 

Das, was ich diesen Fehler wird erhalten:

Trying to get property of non-object (View: C:\laragon\www\App\resources\views\students\partials\show\show-overview.blade.php) (View: C:\laragon\www\App\resources\views\students\partials\show\show-overview.blade.php) 

Ich brauche dringend Hilfe, alles ist nützlich, Tyvm.

Antwort

0

Sie sollten Setup Ihre Struktur eine viele zu viele Beziehung zwischen Schülern und Väter haben, wenn das der Logik moechten, so:

public function fathers() 
{ 
    return $this->belongsToMany('App\Models\Father'); 

    //Also define the inverse relationship on the Father model. 
} 

Nimmt man nun an, dass dann getan haben:

On diese Abfrage $student = Student::with('fathers')->find($id);first() nur anhängen, so sieht es wie folgt aus:

$student = Student::with('fathers')->find($id)->first();

Dann können Sie in Ihrer Ansicht wie folgt darauf zugreifen:

<td>{{ $student->father->first_name }} {{ $student->father->last_name }}</td>

Verwandte Themen