这里是我的member_profiles表中的列:查询生成器Laravel计算所有25岁到35岁是一个
ID
姓氏
FIRST_NAME
生日
civil_status
公务员状态值是“单身”,“已婚”和“离婚”。
此表已经有成千上万的条目。 我想统计所有25到27岁的单身成员。
我可以用这样的开始,但不知道如何继续与特定年龄范围匹配起来
$members = MemberProfile::where('civil_status', 'single')->count();
这里是我的member_profiles表中的列:查询生成器Laravel计算所有25岁到35岁是一个
ID
姓氏
FIRST_NAME
生日
civil_status
公务员状态值是“单身”,“已婚”和“离婚”。
此表已经有成千上万的条目。 我想统计所有25到27岁的单身成员。
我可以用这样的开始,但不知道如何继续与特定年龄范围匹配起来
$members = MemberProfile::where('civil_status', 'single')->count();
试试这个,
$count = DB::table('member_profiles')
->select(DB::raw('floor(DATEDIFF(CURDATE(),birthday) /365) as age') ,'civil_status')
->where('civil_status','single')
->where('age','>',25)
->where('age','<',35)
->count();
这里floor
功能是在十进制值的情况下舍入。由于month_between
在sql中无法识别,因此您可以使用DATEDIFF()
,它以天数为单位,并将其除以365得到年龄值。
希望你明白。
哦,好一个@sagar高塔姆。我会尝试一下。如果不是手动输入今天的日期,而是使用MySQL的'CURDATE()'函数来引用“今天的日期” –
。 –
@RodneyZanoria我已更新了片刻,以查看它。 –
您可以使用碳和whereBetween
use Carbon\Carbon;
Class {
.......
.......
$today = Carbon::now();
//$today = Carbon::createFromDate(2017, 7, 2);//to make manually
$sub25 = $today->subYears(25);
$today = Carbon::now();
//$today = Carbon::createFromDate(2017, 7, 2);//to make manually
$sub35 = $today->subYears(35);
$members = MemberProfile::where('civil_status', 'single')
->whereBetween("birthday",[$sub25,$sub35])
->count();
声音很大,所以也许尝试一些 – rtfm