2013-07-18 26 views
1

我有一個搜索表單PHP Laravel複雜的查詢有4個領域:多個選項

  1. 標題
  2. 類型 - >(單獨查詢來獲取找到流派)
  3. 評級
  4. 排序 - >(包括在所有查詢中)

我想優化搜索功能,因爲它大約有300行。我所做的是寫出所有可能的組合 - 應該包含在查詢中。

if (empty($title) && $genre === 'All' && $rating === '0') {} 
if (!empty($title) && $genre === 'All' && $rating === '0') {} 

有8種可能的組合,我不知道如何優化。

回答

4

我想我找到了一個非常不錯的解決方案,它也可以添加額外的標準。

我不知道你的班級名稱是什麼,所以我假設你有一張書和一本書模型表。

所以這裏是什麼似乎在我設置的快速測試表上工作。

$books = new Book; 

if(!empty($title)) 
    $books = $books->where('title','=',$title); 

if(!empty($genre)) 
    $books = $books->where('genre','=',$genre); 

if(!empty($rating)) 
    $books = $books->where('rating','=',$rating); 

$books = $books->get(); 
+0

這是一個很好的解決方案,謝謝m8。 – Ace