Laravel 拉威尔,过滤两个日期。出错了
编辑 我试图两次获得数据,所以我用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) {{$
使用照明\支持\立面\输入;
公共职能管理()
{
$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,而不是输入中的日期值。”。。