如何在数组贴图函数中使用碳计算年龄?

时间:2018-12-20 04:06:11

标签: laravel-5 php-carbon array-map

此应用程序构建于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 ▶}

我想使用碳计算年龄,并使用数组map(我的早期代码)将其插入到集合中:

 $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 :(得分:1)

您可以将差异计算为

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

已更新:重新生成结果并应用给定的解决方案。

提琴:https://implode.io/i1GanD

对于给定的上下文,这按预期工作。

使用以下代码修改一些代码可消除该错误:

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

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

        return $detail;
    });