使用 Laravel 5.2 从 Ymd 数据库中存储的日期计算年龄

新手上路,请多包涵

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

我想根据 Ymd 格式的数据库中存储的日期计算年龄,

我的问题是:

  • 如何计算年龄?

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

  • 如何以这种格式“md-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

原文由 sanainfotech 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 405
2 个回答

要直接显示在您的视图中:

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

原文由 Gabriel Glauber 发布,翻译遵循 CC BY-SA 3.0 许可协议

日期可以是 Carbon 的实例,它提供了一系列有用的方法。

在您的模型中,导入 Carbon 类:

 use Carbon\Carbon;

并定义一个访问器:

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

然后您可以调用 age 就好像它是一个常规属性一样。例如在刀片视图中:

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

原文由 Florent B. 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏