数据范围介于两个日期Laravel之间

时间:2017-12-13 19:39:03

标签: php sql laravel

我需要获取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()}}

Image of reports page

2 个答案:

答案 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实例是最有帮助的。