简介:
我的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
模式按年龄吸引用户?
答案 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]);`