搜尋

首頁  >  問答  >  主體

使用laravel-translatable取得特定語言的Laravel文章。

<p>我正在使用laravel-translatable庫開發一個多語言的網站系統。在這個Web應用程式中,沒有前端,資料是透過API進行讀寫。我面臨的問題是無法在一個或多個語言中獲取資料庫中儲存的所有記錄,例如從'blog'表中獲取標題為英語和法語的所有記錄。這個函式庫的文檔沒有明確提到這一點,而我也無法透過我嘗試的程式碼解決這個問題。以下是我嘗試的程式碼範例,但都沒有解決我的問題:</p> <pre class="brush:php;toolbar:false;">Route::get('/', function () { return response()->json( DB::table('blogs') ->get() ->filter(function ($blog) { return $blog->getTranslations('title', ['en']); }) ); }); Route::get('/', function () { return response()->json( DB::table('blogs') ->get() ->filter(function ($blog) { return collect(json_decode($blog->title))->has('en'); }) ); }); Route::get('/', function () { return response()->json(Blog::titleEqualsEn()->get(), 200); });<span style="font-family:'sans serif, tahoma, verdana, helvetica';"><span style="white-space:nowrap;"> </span></ span></pre> <p><br /></p>
P粉598140294P粉598140294483 天前582

全部回覆(1)我來回復

  • P粉541565322

    P粉5415653222023-08-01 10:27:03

    你可以透過建立一個中間件來處理每個請求的語言環境,就像這個範例一樣:

    public function handle(Request $request, Closure $next)
        {
            $locales = ['en', 'fr'];
    
            if($request->has('lang') && in_array($request->input('lang'), $locales)){
                App::setLocale($request->input('lang'));
            }
            return $next($request);
        }

    之後,你可以很容易地將你想要的語言環境作為查詢字串傳遞給你的端點。

    GET http://localhost:8000/api/users?lang=en

    此外,請確保使用Eloquent模型而不是查詢建構器。

    回覆
    0
  • 取消回覆