2017-01-17 10 views
1

私はこれがあります。withと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-> article-> translations->タイトル}}私は未定義でエラーが発生しますプロパティ、ビューでタイトルフォームの翻訳を表示するにはどうしたらいいですか? – None

+0

これはうまくいくはずです: '{{$ comment-> article-> translations-> first() - > title}}' –

+1

thats it ... tnx :) – None

関連する問題