Eloquent 从集合中获取两种性别的平均值,而无需再次请求数据库

Eloquent get average for both genders from a collection without requesting again the database

我有这种情况,我直接从数据库中获取一个集合,并且已经引入了几个过滤器,除了性别,如下:

$workers = Worker::where('status','Active')->where('category','SomeCategory')->get();

为了得到一般年龄平均值,我是这样得到的:

$avg_age = $workers->avg('age');

到目前为止一切顺利。

$workers 集合中,有此列 gender。现在我想按性别获得平均年龄。我尝试了以下...但不起作用:

$avg_age_women = $workers->where('gender','female')->avg();

但这不起作用,因为返回值为零。

我知道我可以这样做:

$workers_female = Worker::where('status','Active')->where('category','SomeCategory')->where('gender','female')->get();

但是,如果我可以继续使用 $workers 集合,我认为效率会更高。

有没有办法从原始 $workers 集合中得到女性的平均值???我错过了什么?

你说的不是平均水平。

$avg_age_women = $workers->where('gender','female')->avg("age");