2017-07-06 2 views
1

Ich habe den folgenden Code in einem Laravel-Controller, aber die angegebene Parametervariable $ Idee ist undefiniert in der WhereIn-Funktion. Wie kann ich dort auf $ Idee zugreifen? Vielen Dank!PHP Laravel Variable Scope in Funktionen

public static function getIdea($idea = null) { 
    if ($idea != "") { 
     return DB::table('test')->select('foo') 
      ->whereIn('bar', function($query) 
       { 
        $query->select('foobar') 
         ->from('bar2') 
         ->where('foo2', '=', $idea) 
         ->get(); 
       }) 
      ->get(); 
    } 
} 

Antwort

3

Verwenden Sie das Schlüsselwort use! Siehe Beispiel # 3 Vererben von Variablen aus dem übergeordneten Bereich auf anonymous functions

public static function getIdea($idea = null) { 
    if ($idea != "") { 
     return DB::table('test')->select('foo') 
      ->whereIn('bar', function($query) use ($idea) 
       { 
        $query->select('foobar') 
         ->from('bar2') 
         ->where('foo2', '=', $idea) 
         ->get(); 
       }) 
      ->get(); 
    } 
} 
+0

damn it PHP: D Vielen Dank, das ist es. – Hillcow