get age till now() can use the code below
// Accessor for Age.
public function getAgeAttribute()
{
return Carbon::parse($this->attributes['birth_date'])->age;
}
but what about if the person is dead ?
in the database [death_date] field stored null or yyyy-mm-dd
so how to calculate the age between birth date ~ death date
// Accessor for Age.
public function getAgeAttribute()
{
if (!is_null($this->attributes['death_date']))
{
// how to calculate death_date - birth_date = realAge
return $realAge;
}
return Carbon::parse($this->attributes['birth_date'])->age;
}
just in case someone view this post, here is my answer
// Accessor for Age.
public function getAgeAttribute()
{
// return is_null($this->attributes['death_date'])
// ? Carbon::parse($this->attributes['birth_date'])->age
// : Carbon::parse($this->attributes['birth_date'])->diff(Carbon::parse($this->attributes['death_date']))->format('%y');
// oh, Carbon will auto convert NULL to now(), so no need the upper code
return Carbon::parse($this->attributes['birth_date'])->diff(Carbon::parse($this->attributes['death_date']))->format('%y');
}
you can solve it as the following:
public function getAgeAttribute()
{
if (!is_null($this->attributes['death_date']))
{
$realAge = Carbon::parse($this->attributes['death_date'])->diff(Carbon::parse($this->attributes['birth_date']))->format('%y');
return $realAge
}
return Carbon::parse($this->attributes['birth_date'])->age;
}