使用 Laravel 5.2 以 Y-m-d 计算存储在数据库中的日期的年龄

2022-08-30 17:57:54

嗨,用户通过存储在数据库中的表单添加他们的DOB,

我想从数据库中存储的日期计算年龄,该格式为Y-m-d,

我的问题是:

  • 如何计算年龄?

  • 将逻辑放在哪里,在控制器或模型中?

  • 如何以这种格式“m-d-Y”传递视图中存储的日期

  • 如何传递以年龄为观的逻辑结果。

  • 我正在我的模型中使用如下的东西,这是对吗?

这是控制器:

public function index()   {   
    $profile   = User::find($this->userid())->profiledetailsHasOne;  //This has Dob field                   
    return view('profile.index',['profile' => $profile ]); 
}

这是我的模型:

public function getAge(){
    $this->birthdate->diff($this->attributes['dob'])
    ->format('%y years, %m months and %d days');
}

这是我的观点:

<tr>
    <th>Age</th>
    <td>{{$profile->getAge()}}</td>
</tr>

这是对的吗?我收到如下错误

Call to a member function diff() on null


答案 1

日期可以是碳的实例,它提供了各种有用的方法。

在模型中,导入 Carbon 类:

use Carbon\Carbon;

并定义一个访问器:

/**
 * Accessor for Age.
 */
public function age()
{
    return Carbon::parse($this->attributes['birthdate'])->age;
}

然后,您可以像调用常规属性一样进行调用。例如,在边栏选项卡视图中:age

<p>{{ $user->age() }} years</p>

答案 2

要直接在视图中显示:

\Carbon\Carbon::parse($user->birth)->diff(\Carbon\Carbon::now())->format('%y years, %m months and %d days');

推荐