2017-01-09 82 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