簡體   English   中英

如何在Laravel 5.3中將變量傳遞給內部函數?

[英]How to pass a variable into an internal function in Laravel 5.3?

我試圖將語言環境數據傳遞給雄辯的查詢,但它無法獲取它。 $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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM