2016-11-24 122 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问题有什么不同吗?我看到了不同的专栏和价值。 –