2016-03-29 22 views
1

Heres ne yapıyorum. cevabın kullanıcıya karşılık gelenLaravel 5.2 İstenmeyen yükleme yok

$question = ForumQuestion::where('link',$ques)->with('answers')->first(); 
$answers = $question->answers; 
$answers->load('user'); 
//return $answers; 
return view('forum.question', compact('question','answers')); 

$answers->load('user'); istekli yükler.

public function user() 
    { 
     if ($this->user_type == 'student') { 
      return $this->belongsTo(Student::class, 'user_id'); 
     }else{ 
      return $this->belongsTo(Teacher::class, 'user_id'); 
     } 
    } 

Ancak sorun $ this-> user_type bir çeşit statik alıyor. Eğer ilk cevabım user_type = 'teacher' ise, o zaman student'a bir süre değişse bile her sorguda teacher olduğu varsayılmaktadır. Neden statik? Yüklemeyi istesem iyi çalışır.

+0

Neden iç içe istekli yükleme yapmaya çalışmayın '$ question = ForumQuestion :: nerede ('link', $ ques) -> ('answers.user') -> first();' ile –

+0

@FabioAntunes iç içe istekli yükleme ile istekli tüm yükler, iç içe istekli yükleme sorguları ilk olarak çalıştırıldığı zaman olduğu gibi null 'user' sonuçlanır. Bu null $ sonuçlanır ve bu nedenle "$ this-> user_type" olsaydı, bu ifade her zaman yanlış ve sonuç olarak yanlış veya null kullanıcı yapar. – jovanpreet

+0

Bu nedenle ilişkinizi yanlış bir şekilde tanımladığınızdan, [polimorfik ilişkiler] (https://laravel.com/docs/master/eloquent-relationships#polymorphic-relations) 'a bakın. –

cevap

0

Bunun yerine ne kullanıcı işlevi bir araya

public function student() { 
     return $this->belongsTo(Student::class, 'user_id'); 
    } 

public function teacher() { 
     return $this->belongsTo(Teacher::class, 'user_id'); 
    } 

ve her şeyi koyarak iki farklı kategoriler halinde istekli yükleme değiştirirseniz sadece gerçekten deyimi ise, bir yapmak farklı bir işleve böyle onu aramak istiyorsanız kullanıcı olarak Umarım yardımcı olur.

+0

Bunun işe yaradığını biliyorum ama bu gerçekten iyi bir cevap mı? Sorgular iki katına çıkarılacaktır. user_id'in ya öğretmene ya da öğrenciye ait olması nedeniyle, bunlardan biri ekstra sorgulanacaktır. – jovanpreet