2017-03-17 56 views
0

我正在使用laravel 5.4,我想篩選搜索。其我的前端Laravel過濾器系統與多個複選框

filter search multi checkbox option

我的代碼看起來像這樣

class DeviceFilterController extends Controller 
{ 
    public function filter(Feature $feature){ 

     $marks = isset($_POST["mark"]) ? $_POST["mark"] : null; 

     $feature = $feature->newQuery(); 

     if(isset($marks)) 
     { 
      foreach ($marks as $value) 
      { 
       $feature->where('device_mark', $value); 
      } 
     } 

     return $feature->get(); 

    } 
} 

導致只有一個入口

+0

上顯示您的視圖代碼 – sumit

回答

0

您可能需要使用whereIn()不同的方法,假設你mark輸入是一組ID如[1, 4, 8, 22]

public function filter(Request $request) 
{ 
    $features = Feature::when($request->has('mark'), function($query) use ($request) { 
     return $query->whereIn('device_mark', $request->mark); //Assuming you are passing an array of IDs 
    })->get(); 

    return $features; 
} 

when()只有當您發送'標記'輸入時纔會執行閉包。這樣做的時候沒有將這個樣子

public function filter(Request $request) 
{ 
    $features = []; 

    if ($request->has('mark') && $request->mark != '') { 
     $features = Feature::whereIn('device_mark', $request->mark)->get(); 
    } else { 
     $features = Feature::get(); 
    } 

    return $features; 
} 
0

它非常簡單的嘗試將Ajax用於過濾的搜索方法