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())在上面的函数中选择code>。见: