Laravel foreach月从当前月开始

时间:2019-03-28 06:18:09

标签: php laravel

我有一些带有日期字段的数据。我要显示从当前月份数据开始的数据...

我从当前月份开始获得第一条记录。但是下个月又从一月开始。我想要类似当前月+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月,1月,2月............. 12月

3 个答案:

答案 0 :(得分:0)

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

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

$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());

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

$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();