使用表格中的“用户生日”列按年龄获取用户

时间:2018-10-29 07:59:32

标签: laravel eloquent laravel-5.7

简介:

我的birthdate表中有用户users列。用户生日是默认日期格式:Y-m-d。另外,我有自定义变量器,可以在User模型中获得用户年龄。

诱骗者代码:

public function getAgeAttribute($value) {
    if($this->birthday !== null) {
        $bday = new \DateTime("{$this->birthday}");
        $today = new \Datetime(date('Y-m-d'));
        $diff = $today->diff($bday);

        return $diff->y;
    }

    return null;
}

问题:

如何使用User模式按年龄吸引用户?

5 个答案:

答案 0 :(得分:7)

只需获取今天的日期,然后减去年数即可。然后将其与生日

Users::where('birthday', '<=', date('Y-m-d', strtotime('-20 years')))->get();

答案 1 :(得分:4)

如果您使用的是MySQL,那么还有另一种选择:

 $users = User::whereDate('birthdate' , '<', \DB::raw("CURDATE()-INTERVAL 20 YEAR"))->get();

答案 2 :(得分:0)

您可以使用Collection的{​​{1}}方法根据用户的年龄对其进行分组。

groupBy

然后,您可以像这样获得特定用户的所有用户。

$users = User::all()->groupBy(function($user) {
             return $user->age;
         });

希望这就是您想要的。

答案 3 :(得分:0)

我希望这对您有帮助,date()函数是php函数,它将字符串转换为日期时间。

$users = User::where('birthdate' , '<', date('Y-m-d', strtotime('your input field name')))->get();

答案 4 :(得分:0)

我们也可以通过这种方式做到这一点,我们将增加一年的时间并像这样在日期之间进行搜索

$from = Carbon::today()->subYears($request->age);
$to = Carbon::today()->subYears(($request->age)+1);
$users->whereBetween('birth_date',[$to, $from]);`
相关问题