Laravel 拉威尔,过滤两个日期。出错了

Laravel 拉威尔,过滤两个日期。出错了,laravel,Laravel,编辑 我试图两次获得数据,所以我用Laravel编写了这段代码 控制器 使用照明\支持\立面\输入; 公共职能管理() { $date1=date(“d-m-Y”,输入::get('date1'); $date2=date(“d-m-Y”,输入::get('date2'); $filter=DB::table('rinvoices')->wherebeen('updated_at',[$date1,$date2])->get(); 刀片文件 @foreach($filter作为$f) {{$

编辑

我试图两次获得数据,所以我用Laravel编写了这段代码

控制器

使用照明\支持\立面\输入;
公共职能管理()
{
$date1=date(“d-m-Y”,输入::get('date1');
$date2=date(“d-m-Y”,输入::get('date2');
$filter=DB::table('rinvoices')->wherebeen('updated_at',[$date1,$date2])->get();
刀片文件


@foreach($filter作为$f)
{{$f->coderinvoice}
@endforeach
错误:

InvalidArgumentException。运算符和值组合非法


使用双
where
子句:

$filter=DB::table('rinvoices')
->其中('updated_at','>',$date1)

->其中('updated_at','检索请求数据,将其设置为变量并设置正确的格式(我使用Carbon\Carbon使用Carbon)。您的问题是没有设置日期变量,因此它们默认为启动Unix时间。如果您从POST表单请求中收集请求数据,您现在应该能够访问它

public function manage(Request $request) 
{

     $date1 = ($request->date1)->format('Y-m-d');
     $date2 = ($request->date2)->format('Y-m-d');

     $filtre = DB::table('rinvoices')->whereBetween('updated_at', [$date1, $date2])->get();
}
但是,如果您想创建硬编码日期,最好将其添加到控制器中

public function manage() 
{

     $date1 = "2018-11-01";
     $date2 = "2018-11-05";

     $filtre = DB::table('rinvoices')->whereBetween('updated_at', [$date1, $date2])->get();
}

在使用函数时,您的方法是错误的,然后第二个参数是timestamp。 这应该起作用:

$date1 = date("d-m-Y", strtotime(Input::get('date1')));
$date2 = date("d-m-Y", strtotime(Input::get('date2')));

MySQL的默认日期格式是YYYY-MM-DD

查询前,日期字符串应转换为“Y-m-d”

$date1=date('Y-m-d',strotime(输入::get('date1'),'d-m-Y');
$date2=date('Y-m-d',strottime(输入::get('date2'),'d-m-Y'));
$filter=DB::table('rinvoices')
->其中('updated_at',[$date1,$date2])
->get();

您是否已转储变量$date1和$date2以检查它们是否已设置,以及它们是否以正确的格式设置以进行比较?当where条件满足时,$FILTER是否返回结果?您好,请查看我的eddited post,dd($date1)返回01-01-1970,而不是输入中的日期值。您有输入错误。
id=date2“
您丢失了一个报价。谢谢,但仍然返回01-01-1970..01-01-1970是Unix时间的开始,这意味着$date1没有被设置。您可以dd(Input::all())吗?您好,请查看我的eddited帖子,dd($date1)返回01-01-1970,而不是输入中的日期值。”。。