使用来自 Table 的用户出生日期列按年龄获取用户
Get Users by Age Using User Birthdate Column From Table
简介:
我的 users
table 中有用户 birthdate
列。用户生日有一个默认的日期格式: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
模型获取 年龄 的用户?
只需用今天的日期减去年数即可。然后将其与生日进行比较
Users::where('birthday', '<=', date('Y-m-d', strtotime('-20 years')))->get();
您可以使用 Collection
的 groupBy
方法根据年龄对用户进行分组。
$users = User::all()->groupBy(function($user) {
return $user->age;
});
然后,您可以像这样获取特定用户的所有用户。
$users->get(20);
希望这就是您要找的。
希望对您有所帮助,date()
函数是 php 将字符串转换为日期时间的函数。
$users = User::where('birthdate' , '<', date('Y-m-d', strtotime('your input field name')))->get();
如果您使用的是 MySQL,还有这个替代方案:
$users = User::whereDate('birthdate' , '<', \DB::raw("CURDATE()-INTERVAL 20 YEAR"))->get();
我们也可以通过这种方式来完成我们将增加一年并在日期之间搜索这样
$from = Carbon::today()->subYears($request->age);
$to = Carbon::today()->subYears(($request->age)+1);
$users->whereBetween('birth_date',[$to, $from]);`
简介:
我的 users
table 中有用户 birthdate
列。用户生日有一个默认的日期格式: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
模型获取 年龄 的用户?
只需用今天的日期减去年数即可。然后将其与生日进行比较
Users::where('birthday', '<=', date('Y-m-d', strtotime('-20 years')))->get();
您可以使用 Collection
的 groupBy
方法根据年龄对用户进行分组。
$users = User::all()->groupBy(function($user) {
return $user->age;
});
然后,您可以像这样获取特定用户的所有用户。
$users->get(20);
希望这就是您要找的。
希望对您有所帮助,date()
函数是 php 将字符串转换为日期时间的函数。
$users = User::where('birthdate' , '<', date('Y-m-d', strtotime('your input field name')))->get();
如果您使用的是 MySQL,还有这个替代方案:
$users = User::whereDate('birthdate' , '<', \DB::raw("CURDATE()-INTERVAL 20 YEAR"))->get();
我们也可以通过这种方式来完成我们将增加一年并在日期之间搜索这样
$from = Carbon::today()->subYears($request->age);
$to = Carbon::today()->subYears(($request->age)+1);
$users->whereBetween('birth_date',[$to, $from]);`