Я хочу проверить, являются ли запросы, которые используются для фильтрации, нулевыми, поэтому, если значение null, показать все данные в datatable, в противном случае фильтровать результаты зависят от запрошенных значений

Здесь контроллер

  public function getCustomFilterData(Request $request)
  {
   $arrStart = explode("/", Input::get('start_date'));
    $arrEnd = explode("/", Input::get('end_date'));
    $start = Carbon::create($arrStart[2], $arrStart[0], $arrStart[1], 0, 0, 0);
    $end = Carbon::create($arrEnd[2], $arrEnd[0], $arrEnd[1], 23, 59, 59);

$min = $request->start_amount;
  $max = $request->end_amount;

     $vendorTableName= with(new Vendors())->getTable();
   $categoryTableName= with(new Excategories())->getTable();
 $orders =Checks::select(["checks.*","vendors.vendor_name","excategories.category_name"])->Wherebetween('amount',[$min,$max])->between($start, $end)->leftJoin($vendorTableName,$vendorTableName.".vendor_id","=","checks.vendor_id")->leftJoin($categoryTableName,$categoryTableName.".category_id","=","checks.category_id");
return Datatables::of($orders)->make( TRUE );
}
0
AHKTM 1 Янв 2018 в 13:17

2 ответа

Лучший ответ

Если вы хотите определить, присутствует ли значение в запросе и не является ли оно пустым, вы можете использовать метод has:

if ($request->has('name')) {
    //
}

public function getCustomFilterData(Request $request)
{
    $vendorTableName = with(new Vendors())->getTable();
    $categoryTableName = with(new Excategories())->getTable();
    $orders = Checks::select(["checks.*","vendors.vendor_name","excategories.category_name"]);

    if($request->has('start_amount') && $request->has('end_amount')) {
        $min = $request->start_amount;
        $max = $request->end_amount;

        $orders->Wherebetween('amount',[$min,$max]);
    }

    if($request->has('start_date') && $request->has('end_date')) {
        $arrStart = explode("/", Input::get('start_date'));
        $arrEnd = explode("/", Input::get('end_date'));
        $start = Carbon::create($arrStart[2], $arrStart[0], $arrStart[1], 0, 0, 0);
        $end = Carbon::create($arrEnd[2], $arrEnd[0], $arrEnd[1], 23, 59, 59);

        $orders->between($start, $end);
    }

    $orders = $orders->leftJoin($vendorTableName,$vendorTableName.".vendor_id","=","checks.vendor_id")
                    ->leftJoin($categoryTableName,$categoryTableName.".category_id","=","checks.category_id")
                    ->get();

    return Datatables::of($orders)->make( TRUE );
}
1
Milan Akabari 1 Янв 2018 в 12:41

Хотя я немного опоздал, но если кто-то хочет проверить все значения $request, то это можно сделать вот так

if( !empty($request->has( $request->all() )) ){
    //the value is edited,the above condition returns true if $request has value
}
Else{
    return redirect()->back()->with('warning', 'No Value Edited.');

}

В представлении

@if ($message = Session::get('success'))
                        <div class="alert alert-success alert-dismissable">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                            <strong>Enjoy!&emsp;</strong>{{ $message }}.
                        </div>
                    @endif
                    @if ($message = Session::get('warning'))
                        <div class="alert alert-warning alert-dismissable">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                            <strong>Caution!&emsp;</strong>{{ $message }}.
                        </div>
                    @endif
0
bhucho 21 Июл 2019 в 20:21