2017-07-06 112 views
1

我在Laravel控制器中有以下代碼,但給定參數變量$ idea在'whereIn'函數中未定義。我如何在那裏訪問$ idea?謝謝!PHP Laravel功能變量範圍

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(); 
    } 
} 

回答

3

使用use關鍵字!參見Example#3繼承父變量範圍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

該死的PHP:D非常感謝你,就是這樣。 – Hillcow