首页 > 解决方案 > 在开始日期之后获取数据 laravel

问题描述

我正在使用以下查询来获取start date和之间存在的记录end date

$event =Event::whereBetween('date', [
        $request->start_date, $request->end_date
    ])->orderBy('date', 'desc')->paginate(5);

这在我提供开始日期和结束日期时有效,但是当我只提供开始日期时,我没有得到任何记录——但如果结束日期保持空白,我希望记录在开始日期之后存在。

有什么建议么?

标签: laravellaravel-5eloquent

解决方案


Laravel为这个用例提供了条件子句

$events = Event::query()
    ->when(
        $request->has('start_date') && $request->has('end_date'), 
        function($query, $request) {
            return $query->whereBetween('date', [
                $request->start_date, $request->end_date
            ]);
        }, 
        function($query, $request) {
            return $query->where('date', ' >=', $request->start_date);
        }
    )
    ->orderBy('date', 'desc')
    ->paginate(5);

推荐阅读