拉拉威尔,两次约会.出现错误

  • 本文关键字:两次 约会 错误 laravel
  • 更新时间 :
  • 英文 :


编辑

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

控制器

use IlluminateSupportFacadesInput;
public function manage() 
{
$date1 = date("d-m-Y", Input::get('date1'));
$date2 = date("d-m-Y", Input::get('date2'));
$filtre = DB::table('rinvoices')->whereBetween('updated_at', [$date1, $date2])->get();

刀片文件

<input type="date" name="date1" id="date1" value="01-11-2018"/>
<input type="date" name="date2" id="date2" value="05-11-2018" />
<table>
<tbody>
@foreach($filtre as $f)
<tr>
<td>{{$f->coderinvoice}} </td>
</tr>
@endforeach
</tbody>
</table>

错误:

InvalidArgumentException。非法的运算符和值组合。

使用双where子句:

$filtre = DB::table('rinvoices')
->where('updated_at','>',$date1) 
->where('updated_at','<',$date2) 
->get();

或者您可以简单地使用whereBetween:

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

您使用date函数的方式不对,那么第二个参数是时间戳。这应该有效:

$date1 = date("d-m-Y", strtotime(Input::get('date1')));
$date2 = date("d-m-Y", strtotime(Input::get('date2')));
MySQL的默认DATE格式为YYYY-MM-DD。

查询前应将日期字符串转换为"Y-m-d"。

$date1 = date('Y-m-d', strtotime(Input::get('date1'), 'd-m-Y'));
$date2 = date('Y-m-d', strtotime(Input::get('date2'), 'd-m-Y'));
$filtre = DB::table('rinvoices')
->whereBetween('updated_at', [$date1, $date2])
->get();

检索请求数据,将其设置为变量并设置正确的格式(我使用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();
}

最新更新