2016-07-10 11 views
1

Ich habe ein Modell Test wie folgt benannt:eifrig Last der Beziehungen eines bestimmten Modells in Laravel

class Test extends Model 
{ 
    public $primaryKey = 'test_id'; 
    public function questions() 
    { 
     return $this->belongsToMany('App\Question', 'question_test', 'test_id', 'question_id'); 
    } 
} 

Und ein Question Modell wie folgt aus:

class Question extends Model 
{ 
    public function tests() 
    { 
    return $this->belongsToMany('App\Test', 'question_test', 'question_id', 'test_id'); 
    } 
} 

Wie Sie dort sehen, ist ein ManyToMany Beziehung zwischen diesen beiden Modellen.

Jetzt in einer Controller-Funktion möchte ich einen bestimmten Test (per ID) erhalten und es an eine Ansicht senden. dann eifrig laden alle es ist questions verwandte Modelle und senden Sie es an eine andere Ansicht. dies wie:

public function beginTest ($course_id, $lesson_id, $test_id) 
     { 

       $test = Test::find($test_id); 


       if ($test->onebyone) { 

        return view('main/pages/test/test-onebyone', compact('test')); 

       } else { 

        $test = $test->with('questions.options')->get(); 
        return view('main/pages/test/test-onepage', compact('test', 'done_test_id')); 

       } 
      } 
     } 

Problem ist, dass wenn ich with() Laravel Methode eifrig Last Beziehungen verwenden, ist es alle Testmodelle mit ihren Question Beziehungen zurückzukehren, während ich nur die Beziehungen von ausgewählten Test Modell erhalten möchten.

Was ist Ihre Lösung, um das zu lösen?

Antwort

1

Sie können 'faul eifrig laden' verwenden.

$test->load('questions.options'); 

Mit with aus der Modellinstanz wird es einen neuen Builder machen verwenden und eine neue Abfrage verursachen, ausgeführt werden.

Verwandte Themen