使用laravel-translatable获取特定语言的Laravel文章。
P粉598140294
P粉598140294 2023-07-31 15:35:41
[PHP讨论组]

我正在使用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);
}); 


P粉598140294
P粉598140294

全部回复(1)
P粉541565322

你可以通过创建一个中间件来处理每个请求的语言环境,就像这个例子一样:

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模型而不是查询构建器。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号