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");
我有这种情况,我直接从数据库中获取一个集合,并且已经引入了几个过滤器,除了性别,如下:
$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");