laravel Carbon рассчитать возраст при смерти (не до сих пор) - PullRequest
0 голосов
/ 30 мая 2018

получить возраст до сих пор () может использовать код ниже

// Accessor for Age.
public function getAgeAttribute()
{
    return Carbon::parse($this->attributes['birth_date'])->age;
}

но как насчет, если человек мертв?

в поле базы данных [death_date] сохранено значение null или yyyy-мм-дд

так как рассчитать возраст между датой рождения ~ датой смерти

// 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;
}

на всякий случай, если кто-то просмотрит этот пост, вот мой ответ

// 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');
}

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Если вы ищете возраст в годах, попробуйте это:

$birth = new Carbon($this->attributes['birth_date']);
$death = new Carbon($this->attributes['death_date']);

$age = $birth->diffInYears($death); // Returns Integer 
0 голосов
/ 30 мая 2018

Вы можете решить это следующим образом:

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;
}
0 голосов
/ 30 мая 2018
$birth_date = Carbon::parse($this->attributes['birth_date']);
$death_date = Carbon::parse($this->attributes['death_date']);

echo $birth_date->diffInYears($death_date);  
...