2017-01-15 9 views
0

私は働く機能を持っていますが、コンサルタントごとに返される治療の数を制限したいと思います。Laravel eager load function limit

実施例:

Clinic::where('user_id', Auth::id()) 
      ->with('consultants.specialism', 'consultants.treatments') 
      ->first(); 

提案(ただし、動作していない)例:

Clinic::where('user_id', Auth::id()) 
      ->with('consultants.specialism') 
      ->with(['consultants.treatments' => function ($query) { 
       $query->take(3); 
      }]) 
      ->first(); 

残念なことに、take又はlimit関数、返さ治療の合計数に限り。

私が望むのは、各コンサルタントの治療を合計ではなく、 に制限することです。

どうすればいいですか?

+0

との積極的なロードをCollection::mapのようなものを使用してPHPで切り捨てるか、交換 'treatments'は右、治療法のコレクションを返す必要がありますどちらか?それでは、最初の3つだけを取得したいと思っています。だから問題は何ですか? ' - > take(3)'はそれを正確に行います。 – Frondor

+0

http://stackoverflow.com/questions/33607088/laravel-5-eager-loading-with-limit – sumit

答えて

-1

は、私は自分の携帯電話によ

Clinic::where('user_id', Auth::id()) 
->with(['consultants' => function ($query) { 
    $query 
    ->with(['specialism','treatments']) 
    ->take(3); 
}]) ->first(); 

これを試してみてください。だから私のコードの書式設定を許してください。あなたは2つのオプションがあり

+0

上記(制限が使用されている)から返されたクエリは、 'select * from consultants where consultants.clinic_id in( '1')limit 3 'となる。つまり、本質的にコンサルタント1人に限定され、コンサルタント1人につき3つの治療に制限されることはありません – Ben

関連する問題