【问题标题】:Laravel Eloquent Birthdays Query to get Date Column based on Date and Month onlyLaravel Eloquent 生日查询仅基于日期和月份获取日期列
【发布时间】:2016-05-16 16:23:05
【问题描述】:

我在 mysql 中有一个 date() 列,其中包含 mysql 的 YYYY-MM-DD 格式的出生日期:

$table->date('dob')->nullable();

我正在尝试查询此表,以便列出从今天到接下来 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();

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

我不知道如何实现。有人可以帮帮我吗...

【问题讨论】:

    标签: laravel eloquent laravel-5.1 date


    【解决方案1】:

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

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

    享受

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 2019-10-04
      • 2018-10-15
      • 1970-01-01
      • 2023-01-09
      • 2021-10-08
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多