带计数器的Laravel雄辩模型

带计数器的Laravel雄辩模型,laravel,count,eloquent,has-many,relationships,Laravel,Count,Eloquent,Has Many,Relationships,我试图统计一个类别中的所有文件,我有以下两种关系: 公共函数文件(){ 返回$this->hasMany('App\File','category\u id','category\u id'); } 公共函数fileCount(){ 返回$this->files()->selectRaw(“类别id,计数(*)为计数”) ->groupBy(“类别识别”); } 这给了我一个项目集合,其中count属性可以如下访问: $my_category=category::where(“categor

我试图统计一个类别中的所有文件,我有以下两种关系:


公共函数文件(){
返回$this->hasMany('App\File','category\u id','category\u id');
}
公共函数fileCount(){
返回$this->files()->selectRaw(“类别id,计数(*)为计数”)
->groupBy(“类别识别”);
}

这给了我一个项目集合,其中
count
属性可以如下访问:

$my_category=category::where(“category_id”,category_id)->with('fileCount')->get();
$file\u counter=$my\u category->first()->fileCount->first()->count

是否可以将
count
属性直接附加到
$my_category
变量?如有任何建议,我们将不胜感激。

您可以使用以下方法:

这将把
文件\u count
属性放入结果中

如果您想在不实际加载的情况下计算关系中的结果数量,可以使用withCount方法,该方法将在生成的模型上放置一个{relation}\u count列

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