如何使用 laravel 中的 query() 函数对两个日期之间的数据进行排序

Posted

技术标签:

【中文标题】如何使用 laravel 中的 query() 函数对两个日期之间的数据进行排序【英文标题】:How to sort data between two dates using query() function in laravel 【发布时间】:2021-12-20 15:16:48 【问题描述】:

这是我的控制器:

$my_query = Deathregister::query();
foreach ($request->query() as $key => $value) 

    $my_query->where($key, $value);

$my_query->get();

现在,如果我通过“fromdate = 2020-10-30”和“todate = 2021-11-07”,我想要这些天的所有数据。这可能吗?

【问题讨论】:

【参考方案1】:

下面的代码对我有用,可以通过给定所有带有日期的参数对日期进行排序。

$q = $request->query();
if ($q != NULL) 
    $fromdate = $request->fromdate;
    $todate = $request->todate;
    $my_query = Movementregister::query();
    if ($fromdate != NULL and $todate != NULL) 
        if (!empty($q['type'])) 
            $my_query->where('type', $q['type']);
        
        if (!empty($q['issue'])) 
            $my_query->where('issue', $q['issue']);
        
        $my_query->whereBetween('created_at', [$fromdate, $todate]);
      else 
        foreach ($request->query() as $key => $value) 
            $my_query->where($key, $value);
        
  
  $data = $my_query->get();
  return response()->json(["message" => "Success", "data" => $data], 200);

【讨论】:

【参考方案2】:

你可以使用 whereDate() 方法:

Deathregister::whereDate('date_field','>=', $request->input('fromdate'))
    ->whereDate('date_field','<=', $request->input('todate'))
    ->get();

【讨论】:

【参考方案3】:

您可以使用 phpCarbonPeriod 类。 在 Laravel 中使用它

先导入

use Carbon\CarbonPeriod;

然后在控制器函数中使用

$period = CarbonPeriod::create($request->from_dt,'1 day', $request->to_dt);

foreach ($period as $value) 
   $reqDate =  $value->format('d-M-Y');
   //$reqDate will have the date you can change the format as per your requirement

【讨论】:

以上是关于如何使用 laravel 中的 query() 函数对两个日期之间的数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

laravel api处理程序如何通过子列进行排序

如何在 DB::select(query) 上使用分页 - Laravel

如何使用 spatie/laravel-query-builder 过滤/搜索具有关系的数据? (拉拉维尔)

如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?

我们可以在 Laravel 迁移中的单个 DB::statement("Query 1; Query 2") 中使用多个 SQL 查询吗?

如何使用 laravel Query Builder 进行复杂查询