我有一个Post
模型,每个帖子都有很多翻译,例如:ru
,fr
,en
- (post_translations
表),工作获取具有特定翻译的所有帖子的代码如下(例如fr
):
$locale = 'fr';
$posts = Post::with([
'translations' => function($q) use($locale){
$q->where('language', $locale);
}
])->get();
但有些$posts
没有fr
翻译,所有帖子都有en
翻译。
我希望获得fr
翻译的所有帖子以及没有fr
的帖子,返回en
翻译!
我必须手动执行此操作吗? E.I.循环播放所有帖子并将en
翻译添加到没有fr
的帖子或者有一个laravel方式来执行此操作?
答案 0 :(得分:1)
尝试使用此解决方案获取所有fr:
$posts = Post::whereHas('translations', function($q) use($locale){
$q->where('language', $locale);
})->get();
希望有所帮助:)
答案 1 :(得分:1)
根据你所写的内容,我理解帖子总是用英文写成,然后翻译成其他语言。
我不知道你有什么用处,但我建议你用法语和英语翻译查询所有帖子,然后在打印时过滤它们
$locale = 'fr';
$posts = Post::with([
'translations' => function($q) use($locale){
$q->where('language', $locale);
$q->orWhere('language', 'en');
}
])->get();