Laravel Eloquent Birthdays 查询仅基于日期和月份获取日期列

Nee*_*eel 3 date dob laravel eloquent laravel-5.1

date()在 mysql 中有一个列,它具有 mysqlYYYY-MM-DD格式的出生日期:

$table->date('dob')->nullable();
Run Code Online (Sandbox Code Playgroud)

我正在尝试查询此表,以便它列出从今天到接下来 7 天生日的所有用户。我现在有这样的事情:

$date = new Carbon;
$today = $date->format('Y-m-d');
$futureDays = $date->addDays(7)->format('Y-m-d');

$birthdays = SiteUsers::where('dob', '>=', $today)
                        ->where('dob', '<=', $futureDays)
                        ->orderBy('dob', 'ASC')
                        ->get();
Run Code Online (Sandbox Code Playgroud)

上述查询的问题在于,它只列出了具有今年确切日期的 DOB 用户,这是不正确的。我真正想要的是通过仅匹配“日期”和“月份”而忽略“年份”来列出生日的用户,而不管他们出生的年份。

我不知道如何实现这一目标。有人可以帮我吗?

Nee*_*eel 5

在我发布我的问题后不久,我尝试了一种使用DateOfYear()SQL 函数的原始查询的方法。所以这就是我现在所拥有的,它似乎通过在接下来的 7 天内让用户生日而不管年份如何:

$birthdays = SiteUsers::whereRaw('DAYOFYEAR(curdate()) <= DAYOFYEAR(dob) AND DAYOFYEAR(curdate()) + 7 >=  dayofyear(dob)')
                        ->orderByRaw('DAYOFYEAR(dob)')
                        ->get();
Run Code Online (Sandbox Code Playgroud)

请享用