[英]Data range between 2 dates 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()}}
可能是數據格式化。 要解決此問題,您可以創建一個函數並調用該函數以轉換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'));
您可能還想將字段vin添加到客戶模型的$ date變量中。 這會將字段轉換為Carbon對象,可以提供幫助。
protected $dates = ['vin'];
由於這將是Carbon實例,因此您也應該將要比較的日期轉換為Carbon實例。 可以將其與上述Laerte的答案結合起來。 代替使用\\ DateTime :: createFromFormat(),您只需返回一個新的Carbon實例。
return new Carbon($date)
過去,Laravel在比較日期時遇到問題,我發現使用內置的Carbon包並將所有內容轉換為Carbon實例是最有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.