[英]Laravel get Eloquent relation with default value if relation is not present?
我有一個Post
模型中,每個崗位都有例如許多翻譯: ru
, fr
, en
- ( post_translations
表),用於獲取所有文章與特定的翻譯工作代碼是這樣的(如fr
):
$locale = 'fr';
$posts = Post::with([
'translations' => function($q) use($locale){
$q->where('language', $locale);
}
])->get();
但是$posts
中的一些沒有fr
翻譯,所有posts都有en
translation。
我想獲取所有帶有fr
翻譯的帖子,而對於沒有fr
帖子,請返回en
translation!
我是否必須手動執行此操作? ei遍歷所有帖子並在沒有fr
或laravel方式的帖子上添加en
翻譯。
嘗試此解決方案以獲取所有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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.