2016-06-14 15 views
1

Ich versuche, eine Sammlung von Daten basierend auf einer Konstanten in einer Klasse definiert zu filtern. Die $results ist eine Laravel Collection. Als ich zu filtern versuchen, erhalte ich diese:Filterung basierend auf Klassenkonstanten mit Laravel-Filter

Fatal error: Call to undefined method MatchRecord::constant()

Was mache ich falsch oder was andere Art und Weise kann ich Ergebnisse filtern, um die Konstanten basierend auf der Klasse MatchRecord definiert?

class MatchRecord 
{ 
    /** 
    * Match List 
    * @var Collection 
    */ 
    private $results; 

    const ERROR = 0; 
    const ARENA = 1; 
    const CAMPAIGN = 2; 
    const CUSTOM = 3; 
    const WARZONE = 4; 

    /** 
    * Get list of matches from results for given mode 
    * @param String $matchType 
    * @return Collection 
    */ 
    public function getMatchesByType($matchType) 
    { 
     // results[Id][GameMode] 
     $filteredMatches = $this->results->filter(function ($match) use ($matchType) { 
       return $match['Id']['GameMode'] === self::constant(strtoupper($matchType)); 
     }); 

     return $filteredMatches; 
    } 
} 

https://gyazo.com/b72ae052d795a1009a2c97141d629ec0

Antwort

0

Das nächste, was ich versuchte, nachdem ich Arbeit geschrieben. FML. Hätte es einfach nur fünf Minuten lang ausprobieren müssen.

$filteredMatches = $this->results->filter(function ($match) use ($matchType) { 
    return $match['Id']['GameMode'] === constant('Self::'.strtoupper($matchType)); 
}); 

Die Art, wie ich konstant() anrief, war nicht korrekt.

+0

Fehlende a ')' am Ende der Rückleitung – Raptor

+0

Fehler in Kopie einfügen von Editor auf meine selbst Antwort, aber ich habe es funktioniert. –

Verwandte Themen