繁体   English   中英

如何根据数据库中的字段表获取数据过滤日期

[英]How to get data filter date according to field table from database

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我在 LaporanController.php 中的代码

class LaporanController extends Controller
{
    public function index(Request $request)
    {
        if (isset($request->start_date) && isset($request->end_date)) {
              $start_date = Carbon::parse($request->start_date)->format('Y-m-d');
              $end_date = Carbon::parse($request->end_date)->format('Y-m-d');

              $attendance_absent = DB::table('attendance_absent as absent')
                    ->whereBetween('absent.do_date_start',   'absent.do_date_end', [$start_date, $end_date])
                    ->get();
             
              dd($attendance_absent);

        }

    }
} 

如何根据数据库字段do_date_start和do_date_end中的attendance_absent表从start_date和end_date获取请求数据? 我尝试使用 whereBetween 但出现错误:Illuminate\Database\Query\Builder::whereBetween(): Argument #2 ($values) must be of type array, string given. 如何解决我的问题?

whereBetween function用于查询一个字段有2个或多个值,你真正想要的只是where function两次,试试这个:

...
      ->where([
        ['absent.do_date_start', '>=', $start_date],
        ['absent.do_date_end', '<=', $end_date],
      ])
      ->orWhere(function ($query) use ($start_date, $end_date) {
        $query->where([
          ['absent.do_date_start', '>', $start_date],
          ['absent.do_date_start', '>', $end_date],
          ['absent.do_date_end', '<', $start_date],
          ['absent.do_date_end', '<', $end_date],
        ])
      })
      ->get();
...

通常whereBetween用于单列日期检查。 但在这种情况下,您需要从不同的列中获取信息。 所以试着像这样检查那些日期。 我认为我们会为您提供全面帮助。 像这样尝试

   ->whereDate('do_date_start', '>=', $from_date)
   ->whereDate('do_date_start', '<=', $to_date)
   ->whereDate('do_date_end', '>=', $from_date)
   ->whereDate('do_date_end', '<=', $to_date)

如果您使用whereBetween ,您将不会获得今天相同的日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM