我想计算使用出生日期的用户的平均年龄。我有一个名为Member
的Model类,包括一个获取用户年龄的函数。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Member extends Model {
public static function averageAge() {
//What to do here
}
public function age() {
$birthDate = Carbon::parse($this->birthDate);
return $birthDate->diffInYears(Carbon::now());
}
}
答案 0 :(得分:4)
Carbon 有计算日期“年龄”的方法,因此您可以在模型中执行此操作:
class Member extends Model
{
protected $casts = [
'birthDate' => 'date',
];
public function getAgeAttribute()
{
return $this->birthDate->age;
}
}
如果您想要计算多个成员的平均年龄,那么我将创建一个类,该类包含成员集合并返回该值:
class AverageAge
{
public static function forMembers(Collection $members)
{
return $members->average(function ($member) {
return $member->age;
});
}
}
然后你可以这样使用:
$members = Member::where(...)->get();
$averageAge = AverageAge::forMembers($members);