Heres, was ich tue.Laravel 5.2 eifrig Laden keine funktioniert
$question = ForumQuestion::where('link',$ques)->with('answers')->first();
$answers = $question->answers;
$answers->load('user');
//return $answers;
return view('forum.question', compact('question','answers'));
die $answers->load('user');
eifrig Lasten Benutzer der Antwort entspricht.
public function user()
{
if ($this->user_type == 'student') {
return $this->belongsTo(Student::class, 'user_id');
}else{
return $this->belongsTo(Teacher::class, 'user_id');
}
}
Aber Problem ist $ this-> user_type bekommt eine Art von statischen. Wenn meine erste Antwort user_type = 'teacher'
hat, dann nimmt es in jeder Abfrage an, wie es teacher
ist, obwohl es einige Zeit zu student
ändert. Warum ist es statisch? Wenn ich nicht eifrig lade, funktioniert es gut.
Warum versuchen Sie nicht, verschachtelt eifrig zu laden '$ question = ForumQuestion :: wo ('link', $ ques) -> mit ('answers.user') -> first();' dies wird alle Ihre Antworten mit den Benutzern eifrig geladen –
@FabioAntunes verschachteltes eifriges Laden resultiert in Null 'Benutzer' wie zum Zeitpunkt des verschachtelten eifrigen Ladens werden Anfragen zuerst gebaut dann ausgeführt. Dies führt dazu, dass $ this auf null gesetzt wird, und daher würde es nicht $ this-> user_type geben, was if-Anweisung immer false und als Ergebnis false oder null user macht. – jovanpreet
Das ist, weil Sie Ihre Beziehung in der falschen Weise definieren, werfen Sie einen Blick auf [polymorphe Beziehungen] (https://laravel.com/docs/master/eloquent-relationships#polymorphic-relations) –