2016-11-24 78 views
2

我正在嘗試搜索多個模型。我已經設置了路線和HTML表單,並且我正在成功地在我的控制器中接收數據。現在,我想查詢多個列並將結果作爲一個雄辯或數組。使用Laravel搜索

實現此目的的正確方法是什麼?

public function search(Request $request) { 
    $searchTerm = $request->search; 

    // I want to search.. 
    Content::where('value', '%' . $searchTerm . '%')->get(); 
    BlogPost::where('value', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

你能加入這一行'$ SEARCHTERM = $請求 - >搜索的分號結束;' ? –

回答

2

首先,將like添加到查詢中。然後,如果你想要一個數組,使用toArray()方法和array_merge()合併結果:

$result1 = Content::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result2 = BlogPost::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result = array_merge($result1, $result2); 

如果你想獲得的集合,只是得到的數據以及與merge()幫手合併。

+0

非常感謝。我有個問題。我嘗試使用'{{$ result}}'但我無法用這種方法得到它。什麼是實現它的正確方法?此外,使用'merge()'而不是'array_merge()'拋出我'調用未定義函數App \ Http \ Controllers \ merge()' – senty

+1

@senty這裏'$ result是'一個數組或集合,所以你需要用'foreach($ result as $ oneRow)'遍歷它,然後用'{{$ oneRow-> value}}'獲得循環內的數據。把'{{dd($ result)}}'放入視圖中,可以查看'$ result'的結構。 –

0

你只是把結果放在一個變量中?

public function search(Request $request) { 
    $searchTerm = $request->search 

    // I want to search.. 
    $contents = Content::where('column', '%' . $searchTerm . '%')->get(); 
    $blogs = BlogPost::where('column', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

與@senty問題有什麼不同嗎?我看到了不同的專欄和價值。 –