2017-04-13 4 views
0

Ich habe die folgende Abfrage für ein Modell - jedoch die Bedingung der Abfrage nur der Teams Übereinstimmungen gilt nur für die erste WHERE-Klausel.Relation Abfrage mit Parametergruppierung

$this->matches = $this->team->matches()->whereNull('wbp')->orWhere(function($q) { 
     $q->whereNotNull('wbp')->where('is_played','=',0); 
    })->get(); 

Wenn ich sie auf ihren eigenen, sie einwandfrei funktionieren - sowohl Rückkehr genau ein Artikel, wie sie sollten:

$this->team->matches()->whereNull('wbp')->get(); 

$this->team->matches()->where(function($q) { 
     $q->whereNotNull('wbp')->where('is_played','=',0); 
    })->get(); 

Aber Verkettungs sie geben mir nur alle Teams Spiele, in denen WBP ist null, genauso wie alle Matches eines Teams, bei denen wbp! = null und is_played = false ist.

Wie kann ich es hier richtig verketten?

Antwort

1

ich Kette erforderlich, um die in dem auf die Spiele() aufrufen:

$this->matches = $this->team->matches()->where(function ($q) 
    { 
     $q->whereNull('wbp')->orWhere(function($q) 
     { 
      $q->whereNotNull('wbp')->where('is_played','=',0); 
     }); 
    })->get();