2016-11-24 75 views
1

我想追加各種不同的查詢爲我的過濾器,但這裏的問題是我的orWhere條件異常工作,並給我結果,無論我的條件。如何從表格中獲取數據,在Laravel 5.2中添加各種查詢?

我加入我下面的控制器:

public function earringsFilter(Request $request) 
{ 
    if($request->isMethod('post')) { 
     $data = array_filter($request->all()); 
     $filter = $data['filter']; 
     $jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3'); 
     $earrings = &$jewelleryEarringsData; 
     $carat = array(); 
     $amount = array(); 
     $metal = array(); 
     if(isset($data['metal'])){ 
      $metal = $data['metal']; 
      //$earrings->whereIn('metal_type', $metal); 
      foreach($metal as $valk){ 
       $earrings->orWhere('metal_type', 'like', '%'.$valk.'%'); 
      } 
     } 
     if(isset($data['amount']['1']) && $data['amount']['1'] !=''){ 
      $amount = $data['amount']; 
      $amt1 = $amount['0']; 
      $amt2 = $amount['1']; 
      $earrings->whereBetween('price',[$amt1,$amt2]); 
     } 
     if(isset($data['carat']['1']) && $data['carat']['1'] !=''){ 
      $carat = $data['carat']; 
      $carat1 = $carat['0']; 
      $carat2 = $carat['1']; 
      $earrings->where('total_weight','>=',$carat1)->where('total_weight','<=',$carat2); 
     } 
     $jewelleryEarringsData = $earrings->where('item_type', $filter)->get(); 
    } 
} 

因此,代碼在那裏我使用Laravel的orWhere功能是給我結果異常。

+0

也發佈表結構,數據和所需otuput –

+0

你不耳環可變 –

回答

0

你的代碼改成這樣:

foreach ($metal as $valk){ 
    $earrings = $earrings->orWhere('metal_type', 'like', '%'.$valk.'%'); 
} 
2

請改變你的

$jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3'); 

$jewelleryEarringsData = Jwellery::select('id','name','price','msrp','metal_type','image_url','total_weight','image_2','image_3')->get(); 

而且還重新分配值回耳環變量。 希望這有助於你

+0

是啊......即使我有同樣的懷疑 –

+0

感謝回答,但問題是有與分配值回或Where條件。如果我刪除或在上述附加查詢工作絕對fine.but如果我添加或在上面的查詢工作,而不考慮條件 – Rana

相關問題