我需要获取2个日期之间的所有值(Datapicker)。用户选择他想要的日期,然后将显示所有信息,但我不知道如何做到这一点,我尝试但它不起作用:(
第一部分是我的控制器
第二个是我的搜索功能
在最后一部分,我添加了一张关于我最后一个前端的图片
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\ClienteModel;
class Reportecontroller extends Controller
{
public function index(Request $request)
{
if ($request)
{
$query=trim($request->get('searchText'));
$fechainicial = $request->input('fec_ini_instalacion');
$fechafin = $request->input('fec_fin_instalacion');
$Reportes= DB::table('cliente')
->select('vin')
->whereBetween('vin',array($fechainicial,$fechafin))
->get();
return view('Vistas.Reportes.index',["Reportes"=>$Reportes,"searchText"=>$query]);
}
}
<!---Recordar que dicha ruta llamara a nuestro metodo index y realizara el filtro por medio del searchtext-->
{!! Form::open(array('url'=>'Vistas/Reportes','method'=>'GET','autocomplete'=>'off','role'=>'search'))!!}
<div class="form-group">
<div class="input-group">
<span class="input-group-btn">
<input type="text" name="" value="{{$searchText}}" >
<button type="submit" class="btn btn-primary" value="{{$searchText}}">Buscar</button>
</span>
</div>
</div>
{{Form::close()}}
答案 0 :(得分:0)
这可能是数据格式化。要解决此问题,您可以创建一个函数并调用它来转换Request中的日期:
private function convertDate($date)
{
if ($date === null) {
return null;
}
$dt = \DateTime::createFromFormat('d/m/Y', $date);
if ($dt) {
return $dt->format('Y-m-d');
} else {
return null;
}
}
然后,将日期作为参数调用:
$fechainicial = $this->convertDate($request->input('fec_ini_instalacion'));
$fechafin = $this->convertDate($request->input('fec_fin_instalacion'));
答案 1 :(得分:0)
您可能还想将字段vin添加到客户模型的$ date变量中。这会将字段转换为Carbon对象,这可以提供帮助。
protected $dates = ['vin'];
由于这将是一个Carbon实例,您应该将被比较的日期转换为Carbon实例。这可以与上面的Laerte的答案结合起来。您只需返回一个新的Carbon实例,而不是使用\ DateTime :: createFromFormat()。
return new Carbon($date)
过去我与Laravel存在问题并比较日期,我发现使用内置Carbon软件包并将所有内容转换为Carbon实例是最有帮助的。