Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何将出生日期转换为年龄并存储_Laravel_Eloquent_Model - Fatal编程技术网

Laravel 如何将出生日期转换为年龄并存储

Laravel 如何将出生日期转换为年龄并存储,laravel,eloquent,model,Laravel,Eloquent,Model,假设我有一个数据库表,它的出生日期列名为dob 然后,我想使用以下方法获取所有数据: $data = MY_Model::all(); 如何将我的$data->dob转换为年龄(年、月、日),然后将其存储在$data中,以便我可以使用$data->age访问它 $dateOfBirth = '1994-07-02'; $years = \Carbon::parse($dateOfBirth)->age; dd($years); 参考在您的模型上创建此方法: public functio

假设我有一个数据库表,它的出生日期列名为
dob

然后,我想使用以下方法获取所有数据:

$data = MY_Model::all();
如何将我的
$data->dob
转换为年龄(年、月、日),然后将其存储在
$data
中,以便我可以使用
$data->age
访问它

$dateOfBirth = '1994-07-02';
$years = \Carbon::parse($dateOfBirth)->age;
dd($years);

参考

在您的模型上创建此方法:

public function getAgeAttribute()
{
    return \Carbon::createFromFormat('Y-m-d', $this->dob)->diffInYears(\Carbon::now());
}

现在,如果需要访问DOB之间的差异,您可以直接从模型数据调用它,称为
$data->age

,现在您可以返回
CarbonInterval
,它将允许您访问年、月、日等

您应该能够将此字段(
dob
)强制转换为模型上的“日期”:

protected $casts = [
    'dob' => 'date',
];

public function getAgeAttribute()
{
    return $this->dob->diffAsCarbonInterval();
}
然后,您可以通过
age
属性访问日期差异:

$record->age; // CarbonInterval
(string) $record->age; // `forHumans` readable format
$record->age->years; // years
$record->age->months; // months
$record->age->days; // days

OP假设您已经在使用
时间戳
字段,您还可以将
dob
转换为
datetime
,然后只需执行
$this->dob->diffInYears(\Carbon::now())。见: