2017-01-17 121 views
1

我有這樣的:如何使用和whereHas在一起?

$comments = ArticleComments::orderBy('created_at','desc')->with('user')->with('article')->with('article.translations')->paginate(10); 

但我想是這樣的:

$comments = ArticleComments::orderBy('created_at','desc')->with('user')->with('article')->with('article.translations')->whereHas('article.translations',function($query) use($default_language_id){ 
     $query->where('language_id','=', $default_language_id)->first(); 
     })->paginate(10); 

我怎樣才能article.translations但僅限於默認語言?現在我得到所有語言的所有翻譯

回答

1

您不需要在這裏使用whereHas()。使用eager load contraining功能。該代碼將加載只translations默認語言:

ArticleComments::orderBy('created_at','desc') 
    ->with(['user', 'article', 'article.translations' => function($q) use(default_language_id) { 
     $q->where('language_id', $default_language_id); 
    }])->paginate(10); 
+0

但是當我的foreach意見,做這樣的事情:{{$ comment->物品─> translations->標題}}我得到一個錯誤是未定義財產,我如何顯示標題形式翻譯視圖? – None

+0

這應該工作:'{{$ comment-> article-> translations-> first() - > title}}' –

+1

多數民衆贊成它... tnx :) – None