2017-01-09 11 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の値をサブクエリに渡すにはどうすればよいですか。 manual

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

参照例#3、「親スコープから変数を継承」:

+2

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

答えて

7

は、変数の周り閉鎖を作成するために使用できるuse構造があります。

+0

非常に良い。実際には、私はGoogleの検索を行うために私の問題の名前をつけることについて知らなかった。ありがとう。 – zkanoca

関連する問題