Chcę uzyskać wszystkie przedmioty (tematy) z ich komentarzami, jeśli komentarze user_id = $ id. Próbuję czegoś takiego, ale to nie działa. Więc jeśli Przedmiot nie ma żadnego komentarza z identyfikatorem użytkownika = $ id, to nie potrzebuję tego przedmiotu.Laravel 4 Eager Ograniczenia ładowania
W modelu DiscussionsItem mam Methode:
public function discussionsComments() {
return $this->hasMany('DiscussionsComment', 'discussionsitem_id');
}
mojej kwerendy w kontroler jest tak:!
$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();
Moim problemem jest to, że aby elementy z komentarzami, gdzie komentarze user_id = $ id .
P.S. Potrzebuję 5 komentarzy, ale nie mogę sobie wyobrazić, jak to zrobić, ponieważ -> take (5) w moim gorliwym ładunku nie działa.
mi zrozumieć to (kod robocza):
$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);
});
Oto jak to zrobić: http://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ w MySQL –