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

时间:2017-06-02 16:05:53

标签: laravel collections eloquent laravel-eloquent

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

$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集合中获得女性的平均值?我错过了什么?

1 个答案:

答案 0 :(得分:3)

你没有说你想要做什么。

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