【问题标题】:How to filter data between two dates using eloquent laravel?如何使用 eloquent laravel 过滤两个日期之间的数据?
【发布时间】:2021-02-03 15:44:42
【问题描述】:

我想在 laravel 中过滤两个日期之间的数据。我有一个带有日期列的表格,其中日期以 Y-m-d 格式存储。

$total = App\Models\Data::where('age_id',$age->id)
            ->where('nationality',$nationality)
            ->when(isset($to), function($q){
                $q->whereBetween('dateTime',[$from,$to]);
            })->when(!isset($to), function($q){
                $q->where('dateTime',$from);
            })
            ->sum('count');

我的条件是 $to 有时可以为空。但是 whereBetween 需要 $from 和 $to 才能工作。 whereIn 获取 $from 和 $to 的数据,但不在 $from 和 $to 之间。如果只填写 $from,我想过滤该请求日期的数据。如果 $from 和 $to 被填充,我想过滤 $from 和 $to 之间的数据并对这些数据执行计数。我怎样才能做到这一点?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    试试这个:

    $data = App\Models\Data::where('age_id',$age->id)
                ->where('nationality', $nationality)
                ->when(isset($to), function($q) use($from, $to){
                    $q->whereBetween('date', [$from, $to]);
                })
               ->when(!isset($to), function($q) use($from){
                    $q->whereDate('date', $from);
                })
              ->get();
    

    【讨论】:

    • 我可以用 sum 代替 get,因为我在这里求和
    【解决方案2】:

    Eloquent 带有一个when() 函数,可以选择何时需要执行部分查询。

    $data = Data::when(isset($to), function($q){
                $q->whereBetween('date', [$from, $to]);
            })->when(!isset($to), function($q){
                $q->whereDate('date', $from);
            })->get();
    

    【讨论】:

    • 我从现在开始得到未定义的变量 $
    • 我已经编辑了我的函数,你能看到吗
    • 使用这个 if($request->from){ $dates=$this->dateFilter($request->from,$request->to); $from=$dates[0]; $to=$dates[1]; }
    • 我应该在哪里使用它
    【解决方案3】:

    为此,您可以在为空时为$to 赋值,例如:

    if (!$to) {
        $to = now();
    }
    
    $data = Data::whereBetween('date',[$from, $to])->get();
    

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多