Voglio ottenere tutti gli articoli (argomenti) con i loro commenti, se commenti user_id = $ id. Provo qualcosa di simile, ma non funziona. Quindi se Item non ha commenti con user_id = $ id, allora non ho bisogno di questo articolo.Laravel 4 Eager Vincoli di caricamento
Nel modello DiscussionsItem ho Methode:
public function discussionsComments() {
return $this->hasMany('DiscussionsComment', 'discussionsitem_id');
}
La mia domanda controller è simile a questo:!
$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();
Il mio problema è che ho elementi con commenti, dove i commenti id_utente = $ id .
P.S. Ho bisogno di prendere 5 commenti, ma non posso immaginare come farlo, perché -> prendere (5) nel mio carico ansioso non funziona.
ho capirlo (il codice di lavoro):
$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);
});
Ecco come si fa: http://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ in MySQL –