我正在使用laravel-translatable库开发一个多语言的网站系统。在这个Web应用程序中,没有前端,数据是通过API进行读写。我面临的问题是无法在一个或多个语言中获取数据库中存储的所有记录,例如从'blog'表中获取标题为英语和法语的所有记录。这个库的文档没有明确提到这一点,而我也无法通过我尝试的代码解决这个问题。以下是我尝试的代码示例,但都没有解决我的问题:
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);
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你可以通过创建一个中间件来处理每个请求的语言环境,就像这个例子一样:
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); }之后,你可以很容易地将你想要的语言环境作为查询字符串传递给你的端点。
此外,请确保使用Eloquent模型而不是查询构建器。