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

'функция ($ 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

Смежные вопросы