1

I'm trying to count all the files within a category, and I have these two relationships:

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'); }

This gives me a collection of items, where the count attribute could be accessed like this: $my_category = Category::where("category_id", category_id)->with('fileCount')->get(); $file_counter = $my_category->first()->fileCount->first()->count;

Is it possible to directly attach the count attribute to the $my_category variable? Any suggestions will be appreciated.

1 Answer 1

1

You can use withCount() method:

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

This will put files_count attribute into results.

If you want to count the number of results from a relationship without actually loading them you may use the withCount method, which will place a {relation}_count column on your resulting models

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.