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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Laravel 5.2计算Y-m-d中存储在数据库中的日期的年龄相关的知识,希望对你有一定的参考价值。

嗨用户通过存储在数据库中的表单添加他们的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

答案

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

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

use CarbonCarbon;

并定义一个访问者:

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

然后,您可以将age称为常规属性。例如,在刀片视图中:

<p>{{ $user->age }} years</p>
另一答案

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

CarbonCarbon::parse($user->birth)->diff(CarbonCarbon::now())->format('%y years, %m months and %d days');
另一答案

计算Laravel中的年龄最好使用Carbon in build。在Laravel中返回的日期已经是Carbon格式。

此逻辑应作为模型的默认getter进入模型。

public function getAge(){
    $this->birthdate->diff(Carbon::now())
         ->format('%y years, %m months and %d days');
}

这将导致“23年,6个月和26天”

查看http://carbon.nesbot.com/docs/文档,了解您可以使用它做的所有有趣的事情。

假设您在视图中使用模型,因为您应该在该模型中创建getAge()函数。

您可以在视图中将模型称为$user->getAge()

另一答案

谢谢你的所有建议。

碳很容易和令人敬畏。

我在模型中添加了这段代码:

public function age() {
return $this->dob->diffInYears(Carbon::now());
 }
另一答案

我还设法在视图中将'd-m-Y'中的日期格式'Y-m-d'从数据库更改为传递日期。

我将此代码放在模型中

public function getDOB(){ 
return $this->dob->format('d-m-Y'); 
 }

以上是关于使用Laravel 5.2计算Y-m-d中存储在数据库中的日期的年龄的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LARAVEL 5.2 中将数据存储到数据库中

如何使用Laravel 5.2在数据表服务器端处理中执行算术计算?

如何使用 Laravel 5.2 + Guzzle 6 存储 JWT 并授予用户访问权限

在 Laravel 5.2 中返回列值

Summernote(数据未保存在数据库中)(laravel 5.2)

Laravel 5.2 中的批量插入