Ich habe eine einfache Struktur zurückzukehren, wo ein Post viele Stimmen hat. Eine Abstimmung hat eine „Wert“ Eigenschaft, die entweder 1 oder -1bester Weg, um die Summe Aggregation einer Beziehung Eigenschaft
Wenn alle Beiträge zu lesen ich diese Summe für jeden Post in eine benutzerdefinierten Eigenschaft auf Post-Ebene wählen würde gerne. Derzeit kann ich den
$posts = Post::where('published_at', '<=', $date)
->orderBy('published_at', 'desc')
->simplePaginate(20);
$posts->each(function($post) {
$post->overallRating = $post->getRating();
});
Das voll funktioniert, aber ich denke, es ist nicht so gut wie 20 Anfragen an die Datenbank zu machen, die Bewertungen zu lesen. Gibt es eine Möglichkeit, dies beim tatsächlichen Abrufen der Posts zu vereinfachen?
public function getRating()
{
return $this->votes->sum('value');
}
konnte zeigen Ihnen die 'getRating()' Methode? –
hinzugefügt, um es auf die Post –
Welche Version von Laravel verwenden Sie? –