Laravel 5 如何使用数组映射函数中的碳计算年龄?

Laravel 5 如何使用数组映射函数中的碳计算年龄?,laravel-5,php-carbon,array-map,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);生成此输出: Collect

此应用程序内置于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 ▶}
我想使用carbon计算年龄,并使用array map(我以前的代码)插入到集合中:

更改为Ijas建议代码:

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

你可以把diff计算为

$tarikh->map(function ($detail) {
    $detail->Umur = \Carbon\Carbon::parse($detail->lahir_yy)->diffInYears();
    return $detail;
});
更新:重新生成结果并应用给定的解决方案

小提琴:

对于给定的上下文,这与您预期的一样有效

通过使用以下命令修改某些代码,可以删除错误:

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

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

        return $detail;
    });   

你可以把diff计算为

$tarikh->map(function ($detail) {
    $detail->Umur = \Carbon\Carbon::parse($detail->lahir_yy)->diffInYears();
    return $detail;
});
更新:重新生成结果并应用给定的解决方案

小提琴:

对于给定的上下文,这与您预期的一样有效

通过使用以下命令修改某些代码,可以删除错误:

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

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

        return $detail;
    });   


什么
->lahir_yy
?整数类型的出生年份值…这是相关问题吗?我不这么认为。您传递的是字段,而不是字段名。这是正确的方法。当你
dd($detail->lahir_yy)
你得到了什么?年份对吗?它显示1979年$tarikh->map(function($detail){/$detail->Umur=“{$detail->t_lahir}”-->diff(\Carbon::now()->year);$detail->Umur=Carbon::parse({$detail->lahir_yy}”)->diffInYears();dd($detail->lahir_yy);返回$detail;});什么
->lahir_yy
?整数类型的出生年份值…这是相关问题吗?我不这么认为。您传递的是字段,而不是字段名。这是正确的方法。当你
dd($detail->lahir_yy)
你得到了什么?年份对吗?它显示1979年$tarikh->map(function($detail){/$detail->Umur=“{$detail->t_lahir}”-->diff(\Carbon::now()->year);$detail->Umur=Carbon::parse({$detail->lahir_yy}”)->diffInYears();dd($detail->lahir_yy);返回$detail;});为什么会产生错误DateTime::_construct():无法分析位置0(0)处的时间字符串(0):意外字符..是否需要进行任何更改?整数形式的出生年份..需要更改类型?否。您可以检查小提琴。整数很好。我对这个问题做了更改…是因为数组的排列吗?更新了答案。它适用于给定的上下文。玩具可能有格式错误的数据?不确定。为什么会产生错误DateTime::_construct():无法分析位置0(0)处的时间字符串(0):意外字符..是否需要进行任何更改?整数形式的出生年份..需要更改类型?否。您可以检查小提琴。整数很好。我对这个问题做了更改…是因为数组的排列吗?更新了答案。它适用于给定的上下文。玩具可能有格式错误的数据?不确定。