【问题标题】:Laravel foreach month start from current monthLaravel foreach 月份从当前月份开始
【发布时间】:2019-08-18 20:21:41
【问题描述】:

我有一些包含日期字段的数据。我想显示从当月数据开始的数据...

我得到了从本月开始的第一条记录。但下个月又是从一月开始。我想要当前月份+1 然后当前月份+2 等记录

@foreach($leave_manages as $holiday)
    <tr>
        <td class="danger">{{$holiday->date->format('F')}}</td>
        <td class="warning">{{$holiday->date->format('d-m-Y')}}</td>

        <td class="danger">{{$holiday->holiday}}</td>
        <td class="info">{{$holiday->date->format('l')}}</td>
    </tr>
@endforeach

预期结果:3 月、4 月、5 月、6 月、......、2 月。

实际结果:三月,一月,二月.......,十二月

【问题讨论】:

  • 你能发布 $leave_manages 变量的来源吗?当您获取此/设置此变量时,问题似乎正在发生。
  • $leave_manages=Leave_manage::orderByRaw("当 MONTH(date)=MONTH(CURDATE()) 然后 MONTHNAME(date) end desc, MONTH(date) asc" )->get() ;
  • 请您说明您是如何定义$leave_manages 的,即您的控制器和/或路由中的代码

标签: php laravel


【解决方案1】:

由于不知道数据库的全部内容,因此不能完全确定这就是您要查找的内容。

假设 leave_manages 表包含您可以使用本机 eloquent 查询获取结果的所有月份

$leave_manages = Leave_manage::whereDate('holiday', '>', \Carbon\Carbon::createFromDate(date('Y'), 1, 1))
   ->whereDate('holiday', '<', now())
   ->orderBy('holiday', 'acs')
   ->get();

$leave_manages->concact(Leave_manage::whereDate('holiday', '>', now())
   ->whereDate('holiday', '<', \Carbon\Carbon::createFromDate(date('Y'), 12, 31))
   ->orderBy('holiday', 'acs')
   ->get());

【讨论】:

  • leave_manages 表有一个 'date' 和一个 'holiday' 列。我想显示从当月开始的假期
  • 非常感谢..但是 1 月和 2 月的记录没有显示.. 从 3 月到 12 月显示的记录
  • 尝试now()-&gt;addYear() 而不是addMonths(12)(更新答案)
  • 这会持续到一月还是十二月?您可以尝试手动构建日期,首先尝试是否可行(硬代码 2019-03-31),然后在数据库查询正确后将其重构回 Carbon 对象
  • 一直持续到 12 月。
【解决方案2】:
$from = Carbon::now()->toDateTimeString();
$to = Carbon::now()->subMonth(11)->toDateTimeString();
$data = Leave_manage::where('created_at', '>=', $to)->where('created_at', '<=', $from)
->select(DB::raw("DATE_FORMAT(created_at, '%m') as login_month ,  DATE_FORMAT(created_at, '%Y') as login_year"))
     ->groupBy('login_month')
     ->groupBy('login_year')
     ->orderBy('login_year')
     ->orderBy('login_month')
     ->get();

【讨论】:

    【解决方案3】:

    Laravel 提供了内置函数来使用日期函数获取记录。下面的代码将获取当年从最新到旧的记录。用户这个

    $leave_manages = $leave_manages = Leave_manage::whereYear('created_at', date('Y'))->orderBy('created_at', 'desc')->get();;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多