从存储的日期中提取月份数 Laravel

extract the month number from stored dates Laravel

我正在做一个用户每天插入锻炼的项目。 每个用户都可以从日历中选择他们的锻炼日期,并将其存储在日期形式的锻炼 table 中。 我写这个是为了计算当月的锻炼天数

DB::table('exercises')
 ->select('day')
 ->where('user_id', Auth::user()->id)
 ->whereMonth('day', date('m'))
 ->whereYear('day', date('Y'))
 ->distinct()
 ->get()
 ->count() 

我想为每个用户显示锻炼天数最多的月份,我可以通过将每个月的锻炼天数存储在单独的 table 中来实现,但我不知道如何只提取已存储日期的月份

您可以使用 Carbon,例如下面

$month = Carbon::parse("2022/06/12")->format('MM');

您可以在 Carbon Documentations

阅读更多相关信息
$month= date('M', strtotime($yourdate)

这应该仅根据存储的日期值为您提供月份。如果您已经在控制器中安装并导入了 carbon,我建议您按照@terinao 给出的答案进行操作,因为它增强了许多您在标准 php 日期函数中找不到的功能。

试试这个解决方案

use Carbon\Carbon;
...

$current_month = Carbon::now()->format('m');
$current_year = Carbon::now()->format('Y');

DB::table('exercises')
    ->select('id', 'day')
    ->where('user_id', Auth::user()->id)
    ->whereMonth('day', $current_month)
    ->whereYear('day', $current_year)
    ->distinct()
    ->count();