Szenario: Auf einer hasMany
Beziehung, mit der with
-Funktion (für eager loading), ich die Ergebnisse aus jeder der Reihen innerhalb (statt der Gesamt) begrenzen wollen.Laravel hasMany Beziehung begrenzen mit Abfrage
Ich verfolge dieses Tutorial (wie ich denke, es ist der einzige Weg zu erreichen, was ich brauche, was ich habe so lesen Sie weiter) - https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/
Ich habe ein Model
- Zimmer, dass hasMany
Bewertungen. Modell
Zimmer:
class Room extends Scopes\BaseModel
public function reviews()
{
return $this->hasMany('App\Review');
}
public function latestReviews()
{
return $this->reviews()->latest()->nPerGroup('room_id', 1);
}
Scopes/BaseModel.php:
Direktes Kopieren von der Tutorial-Website, aber mit dem Namensraum von namespace App\Scopes;
-Controller mit dem mit Funktion:
class Room extends Scopes\BaseModel
$rooms = Room::where('room_types_id', $specialism_id)
->with('latestReviews')
->get();
Fehler:
RelationNotFoundException in RelationNotFoundException.php line 20: Call to undefined relationship [latestReviews] on model [App\Room].
Vielen Dank, aber die beiden Lösungen begrenzen die Gesamtzahl der Bewertungen, nicht die Gesamtzahl der Bewertungen für jedes Zimmer. – Ben
Die zweite beschränkt die Anzahl der Bewertungen für jedes Zimmer in der Sammlung – xhulio
Wo verwende ich bitte die Accessor-Methode? – Ben