Php 如果关系不存在,Laravel是否能获得与默认值的有说服力的关系?

Php 如果关系不存在,Laravel是否能获得与默认值的有说服力的关系?,php,mysql,laravel,eloquent,relational-database,Php,Mysql,Laravel,Eloquent,Relational Database,我有一个Post模型,每个Post都有许多翻译,例如:ru,fr,en(Post\u translations表),获取所有具有特定翻译的Post的工作代码如下(例如fr): 但是一些$posts没有fr翻译,所有posts都有en翻译 我想获得所有带有fr翻译的帖子,对于没有fr翻译的帖子,返回en翻译 我必须手动执行此操作吗?e、 i.在所有帖子中循环,将en翻译添加到那些没有fr的帖子中,或者有一种方法可以做到这一点 尝试此解决方案以获取所有fr: $posts = Post::where

我有一个
Post
模型,每个Post都有许多翻译,例如:
ru
fr
en
Post\u translations
表),获取所有具有特定翻译的Post的工作代码如下(例如
fr
):

但是一些
$posts
没有
fr
翻译,所有posts都有
en
翻译

我想获得所有带有
fr
翻译的帖子,对于没有
fr
翻译的帖子,返回
en
翻译


我必须手动执行此操作吗?e、 i.在所有帖子中循环,将
en
翻译添加到那些没有
fr
的帖子中,或者有一种方法可以做到这一点

尝试此解决方案以获取所有fr:

$posts = Post::whereHas('translations', function($q) use($locale){
    $q->where('language', $locale);
})->get();

希望对你有所帮助:)

从你写的内容来看,我知道帖子总是用英语写,然后再翻译成其他语言

我不知道你对此有何用处,但我建议你查询所有有法文和英文翻译的帖子,然后在打印时过滤它们

$locale = 'fr';
$posts = Post::with([
    'translations' => function($q) use($locale){
        $q->where('language', $locale);
        $q->orWhere('language', 'en');
    }
])->get();

谢谢让我试着不工作!没有
fr
时不返回翻译谢谢,如何在视图中筛选?(刀片)
$locale = 'fr';
$posts = Post::with([
    'translations' => function($q) use($locale){
        $q->where('language', $locale);
        $q->orWhere('language', 'en');
    }
])->get();