2015-01-21 35 views
5

Kullanıcı item_id = $ id yorumlarsanız, tüm öğelerini (konuları) kendi yorumuyla almak istiyorum. Böyle bir şey deniyorum ama işe yaramıyor. Bu yüzden Item'ın user_id = $ ID ile herhangi bir yorumu yoksa, bu Öğeye ihtiyacım yoktur. DiscussionsItem modelinde Laravel 4 İstekli Yükleme kısıtlamaları

Ben Methode:

public function discussionsComments() { 

    return $this->hasMany('DiscussionsComment', 'discussionsitem_id'); 
} 

denetleyici Benim sorgu şu şekildedir:!

$items = DiscussionsItem::whereBrandId($brand_id) 
     ->whereBrandCountryId($country_id) 
     ->with(['discussionsComments' => function($query) use ($id) { 
      $query->where('user_id', '=', $id); 
     }]) 
     ->whereHas('discussionsComments', function($query) use ($id) { 
      $query->where('user_id', '=', $id); 
     }) 
     ->with(['views' => function($query) use ($id) { 
      $query->where('user_id', $id)->count(); 
     }]) 
     ->orderBy('created_at', 'DESC')->get(); 

Benim sorunum yorumlar user_id yorumlarınız öğeleri elde ediyoruz = $ id .

P.S. 5 yorum almam gerekiyor, ama bunu nasıl yapacağımı hayal edemiyorum çünkü -> (5) istekli yükümde işe yaramaz.

$items = DiscussionsItem::whereBrandId($brand_id) 
     ->whereBrandCountryId($country_id) 
     ->whereHas('discussionsComments', function($query) use ($id) { 
      $query->where('user_id', '=', $id); 
     }) 
     ->with(['views' => function($query) use ($id) { 
      $query->where('user_id', $id)->count(); 
     }]) 
     ->orderBy('created_at', 'DESC')->get(); 


    $items->each(function($topic) use ($id, 5){ 
     $topic->comments = $topic->discussionsComments()->where('user_id', '=', $id)->get()->take(5); 
    }); 
+0

Bu böyle yaparız

I (çalışma kodu) onu anlamaya: http://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ MySQL içinde –

cevap

0

Özel bir kapsamını yapmak, ya da sadece ilişki tarafından döndürülen miktarını sınırlayabilir:

public function discussionsComments() { 
    return $this->hasMany('DiscussionsComment', 'discussionsitem_id') 
     ->latest() 
     ->take(5); 
}