2017-09-06 1 views
-2

4 E-Commerce-Website
ich meine Daten versuche zu filtern, sondern etwas, was ich falsch mache
Jeder Filter funktioniert gut wie Farben Marken Preis, aber wenn ich Geschlecht filtern seine Rückkehr Daten, wenn ich dd($products) auf nach dem, wenn gender Abschnitt
Aber wenn ich dd($products) vor Rückkehr hier seine Rückkehr 0 Daten bedeuten nichts betrachtet sind meine form, was ich auf Laravel Filter Anfrage falsch mache

{!! Form::open(['url' => 'category/' . $tag . '/filter', 'files'=>false, 'id' => 'color_form']) !!} 

    Price Filter 
    <input name="price" id="ex2" type="text" class="span2" value="" data-slider-min="10" data-slider-max="2000" data-slider-step="5" data-slider-value="[250,450]" onchange="checkBoxHandler()"/> 

    <li class=""> 
     <input type="checkbox" name="gender[]" id="men" value="male" onchange="checkBoxHandler()"> Men's 
    </li> 

    <li class=""> 
     <input type="checkbox" name="gender[]" id="woman" value="female" onchange="checkBoxHandler()"> Woman's 
    </li> 

    @foreach($colors as $color) 
     <input type="checkbox" name="color[]" id="color{{ $color->name }}" value="{{ $color->name }}" onchange="checkBoxHandler()"> 
     <div style="width:25px; height:25px; background:{{ $color->name }}; border:1px solid black; margin:0px 3px 0px 3px; display:inline-block;"></div> &nbsp {{ $color->name }} 
    @endforeach 

    @foreach($brands as $brand) 
     <input type="checkbox" name="brand[]" id="brand{{ $brand->name }}" value="{{ $brand->name }}" onchange="checkBoxHandler()"> 
     {{ $brand->name }}<br> 
    @endforeach 

    @foreach($sizes as $size) 
     <input type="checkbox" name="size[]" id="size{{ $size->name }}" value="{{ $size->name }}" onchange="checkBoxHandler()"> 
     {{ $size->name }}<br> 
    @endforeach 

{!! Form::close() !!} 

sie e ist mein controller

public function newinindex(Request $request){ 
    if(request()->has('gender')||request()->has('price')||request()->has('color')||request()->has('brand')){ 
     if (request()->has('gender')) { 
     $products = Product::orderBy('created_at', 'desc')->where('gender', request('gender'))->newin()->paginate(20); 
     } 
     if (request()->has('price')) { 
      $products = Product::orderBy('created_at', 'desc')->newin()->whereBetween('price', explode(',', $request->price))->paginate(20); 
     } 
     if (request()->has('color')) { 
      $products = Product::orderBy('created_at', 'desc')->newin()->whereHas('colors', function ($query) { 
       $query->where('name', request('color')); 
      })->paginate(20); 
     } 
     if (request()->has('brand')) { 
     $products = Product::orderBy('created_at', 'desc')->newin()->whereHas('brands', function ($query) { 
       $query->where('name', request('brand')); 
      })->paginate(20); 
     } 
    } 
    else { 
     $products = product::orderBy('created_at', 'desc')->newin()->paginate(20); 
    } 
    $sizes = size::orderBy('created_at', 'desc')->paginate(20); 
    $colors = color::orderBy('created_at', 'desc')->paginate(20); 
    $brands = brand::orderBy('created_at', 'desc')->paginate(20); 

    return view('newin.index' ,compact('products', 'brands', 'colors', 'sizes')); 
} 

Antwort

0

Das Geschlecht Feld ist ein Array! Bitte beachten Sie den folgenden Link und versuchen Sie, den Wert im Feldnamen zu verwenden.

example

0

Sie verwenden gender Checkbox als Array. Ändern Sie bitte Ihre controller wie

$products = Product::orderBy('created_at', 'desc')->whereIn('gender', request('gender'))->newin()->paginate(20); 

whereIn Die Methode überprüft, ob eine gegebene Spalte der Wert innerhalb des gegebenen Array enthalten ist.

Mehr über Laravel whereIn

Hoffe, dass es hilfreich ist.