如何使用 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】:您可以使用 php 的CarbonPeriod
类。
在 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() 函数对两个日期之间的数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DB::select(query) 上使用分页 - Laravel
如何使用 spatie/laravel-query-builder 过滤/搜索具有关系的数据? (拉拉维尔)
如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?
我们可以在 Laravel 迁移中的单个 DB::statement("Query 1; Query 2") 中使用多个 SQL 查询吗?