首页 > 解决方案 > laravel 5.2 从今天开始接下来的 3 个事件

问题描述

我想设置一个活动日历。用户必须看到从今天开始的接下来的 3 个事件,因此,当日期过去时,事件消失了怎么办?谢谢你

我的控制器:

class AccueilController extends Controller {
    public function affichePage() {
        $agenda = Agenda::all()->take(3)->sortBy('date');
        return view('Accueil.Page',compact('slides','agenda'));
    }
}

标签: laravellaravel-5.2

解决方案


由于您拨打电话的方式,您的代码没有被排序。这是目前正在发生的事情:

$agenda = Agenda::all()

加载数据库中的每个议程

->take(3)

从我加载的所有议程中,选择前三个。

->sortBy('date');

按日期对这三个进行排序。

为了实现你想要的,根据你的要求,你会打电话

$agenda = Agenda::where('date', '>=', $the_date)->orderBy('date', 'asc')->take(3)->get();

其中$the_date是您希望成为最小值的日期。通常,您会使用 Carbon 库中的日期函数来执行此操作:

$the_date = \Carbon\Carbon::now();

此查询强制在数据库中完成工作,并调用get最终检索结果。按顺序,我们告诉数据库:

  • 将所有议程过滤为仅日期大于我们传入的日期的议程
  • 按日期排序过滤后的集合,从最早的开始
  • 从该过滤集中取出前三个
  • 将该集合返回到 $agendas 变量。

推荐阅读