2016-11-20 4 views
1

Я пытаюсь сосчитать все файлы в категории, и у меня есть эти два вида отношений:Laravel Eloquent модель со счетчиком

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

Это дает мне коллекцию предметов, где атрибут count мог доступ, как это: $my_category = Category::where("category_id", category_id)->with('fileCount')->get(); $file_counter = $my_category->first()->fileCount->first()->count;

можно ли непосредственно прикрепить атрибут count переменной $my_category? Любые предложения будут оценены.

ответ

1

Вы можете использовать withCount() метод:

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

Это поставит files_count атрибут в результатах.

Если вы хотите, чтобы подсчитать количество результатов отношений фактически не загружая их, вы можете использовать метод withCount, который поместит {отношение} _count столбца на ваши полученные моделях

+1

Вы сэр, ты прав! Благодарю. – isinkler

Смежные вопросы