2016-11-20 8 views
1

Ich versuche, alle Dateien innerhalb einer Kategorie zu zählen, und ich habe diese beiden Beziehungen:Laravel Eloquent Modell mit Gegen

public function files() { return $this->hasMany('App\File', 'category_id','category_id'); } public function fileCount() { return $this->files()->selectRaw("category_id, count(*) AS count") ->groupBy('category_id'); }

Das gibt mir eine Sammlung von Gegenständen, wo das count Attribut konnte werden wie folgt zugegriffen: $my_category = Category::where("category_id", category_id)->with('fileCount')->get(); $file_counter = $my_category->first()->fileCount->first()->count;

Ist es möglich, das count Attribut auf die $my_category Variable direkt anschließen? Irgendwelche Vorschläge werden geschätzt.

Antwort

1

können Sie withCount() Methode verwenden:

$my_category = Category::where("category_id", category_id) 
         ->withCount(['files' => function($q) { 
          $q->groupBy('category_id'); 
         }) 
         ->get(); 

Dies setzt files_count Attribut in Ergebnisse.

Wenn Sie die Anzahl der Ergebnisse aus einer Beziehung zählen wollen, ohne sie tatsächlich Laden Sie die withCount Methode verwenden können, die

+1

Sie sir eine {Beziehung} _count Spalte auf dem resultierenden Modelle setzen wird, Du hast recht! Vielen Dank. – isinkler

Verwandte Themen