Как рассчитать возраст, используя углерод в функции карты массива? - PullRequest
0 голосов
/ 20 декабря 2018

Это приложение, созданное в Lavavel 5. У меня была таблица со значением года рождения.Я запрашиваю таблицу, используя этот запрос:

  $tarikh = DB::table('itemregistrations')
            ->select('itemregistrations.lahir_dd', 'itemregistrations.lahir_mm', 'itemregistrations.lahir_yy')
            ->get();

dd ($ tarikh);создайте этот результат:

Collection {#709 ▼
#items: array:1123 [▼
0 => {#681 ▼
  +"lahir_dd": 9
  +"lahir_mm": "June"
  +"lahir_yy": 1979
}
1 => {#670 ▶}
2 => {#680 ▶}
3 => {#713 ▶}

Я хочу рассчитать возраст, используя углерод, и вставить в коллекцию, используя карту массива (мой предыдущий код):

 $tarikh->map(function ($detail) {$detail->Umur = "{$detail->lahir_yy}->diffInYears(\Carbon::now())";
        return $detail;
    });

Изменен на код, предложенный Ijas:

  $tarikh->map(function ($detail) {
     $detail->Umur = \Carbon\Carbon::parse($detail->lahir_yy)->diffInYears();
     return $detail;
 });

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете рассчитать разницу как:

$tarikh->map(function ($detail) {
    $detail->Umur = \Carbon\Carbon::parse($detail->lahir_yy)->diffInYears();
    return $detail;
});

Обновлено: заново сгенерированы ваши результаты и применено данное решение.

Fiddle: https://implode.io/i1GanD

Для данного контекста, Это работает так, как вы ожидали.

Ошибка стирается путем изменения некоторого кода следующим образом:

  $tarikh->map(function ($detail) {

        $detail->Umur = \Carbon\Carbon::createFromFormat('Y',$detail->lahir_yy)->diffInYears(); 

        return $detail;
    });   
...