Php 如何在Laravel 5.3中将变量传递到内部函数?

Php 如何在Laravel 5.3中将变量传递到内部函数?,php,function,laravel,eloquent,Php,Function,Laravel,Eloquent,我试图将区域设置数据传递给雄辩的查询,但它无法获得它$locale值取自URI class MyController extends Controller { public function index($locale = 'en') { $news = News::join('categories', 'categories.id', '=', 'news.catid') ->select('news.*', 'categorie

我试图将区域设置数据传递给雄辩的查询,但它无法获得它
$locale
值取自URI

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
值传递到子查询中?

有一个
use
构造,您可以使用该构造在变量周围创建闭包:

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

参见“从父范围继承变量”中的示例3。有一个
use
结构,可用于围绕变量创建闭包:

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

请参阅“从父范围继承变量”中的示例3。

函数($query)使用($locale){
函数($query)使用($locale){
非常好。事实上,我不知道如何命名我的问题以便进行谷歌搜索。谢谢。非常好。事实上,我不知道如何命名我的问题以便进行谷歌搜索。谢谢。