2017-01-09 136 views
1

我想通過語言環境數據到雄辯的查詢,但它不能得到它。 $locale值取自URI。如何在Laravel 5.3中將變量傳遞給內部函數?

class MyController extends Controller 
{ 

    public function index($locale = 'en') 
    { 
     $news = News::join('categories', 'categories.id', '=', 'news.catid') 
      ->select('news.*', 'categories.category') 
      ->where([['news.published', '1'], ['news.deleted', '0']]) 
      ->where(function ($query) { 
       $query->where('news.language', $locale) //$locale is not recognized naturally 
         ->orWhere('news.language', 'all'); 
      }) 
      ->orderBy('news.published_at', 'desc') 
      ->take(4) 
      ->get(); 

      . 
      . 
      . 
    } 
} 

如何傳遞$locale值到子查詢?

+2

'function($ query)use($ locale){' – Clive

回答

7

還有就是use結構,你可以用它來創建一個關閉周圍的變量:

->where(function ($query) use($locale) { 
    $query->where('news.language', $locale) 
      ->orWhere('news.language', 'all'); 
}) 

見例#3在manual,「從父範圍繼承變量」。

+0

非常好。其實,我不知道如何命名我的問題,以便進行Google搜索。謝謝。 – zkanoca