如何在Laravel中使用查询生成器计算年龄?

时间:2018-08-02 12:28:07

标签: php mysql laravel query-builder laravel-query-builder

我已经将生日保存在MySQL数据库中。

xs:selector/@xpath

现在我想显示年龄。我的查询是:

table name : **users**
field name : **dob**

我正在使用Laravel 5.5。

但这会产生错误。如何在Laravel中使用查询生成器计算年龄?

3 个答案:

答案 0 :(得分:2)

您可以使用selectRaw,然后使用像这样的mysql函数

$user_info = DB::table('users')
                ->selectRaw("TIMESTAMPDIFF(YEAR, DATE(dob), current_date) AS age")
                ->get();

答案 1 :(得分:1)

我建议您在app/User.php模型中创建自定义属性。

例如:

在您的User.php

public function getAgeAttribute() {
    return $this->dob->diffInYears(\Carbon\Carbon::now());
}

现在,在controller和/或view中,您可以通过执行以下操作将该方法作为属性来访问:

Auth::user()->age;

这将根据getAgeAttribute()在用户模型中设置一个属性。

有关更多信息,请查看:this GIST

答案 2 :(得分:0)

您可以像这样在模型中定义一个函数

public function age() {
    return $this->dob->diffInYears(\Carbon::now());
}

之后,您可以这样称呼

{{ $user->age() }}}