Php 用拉威尔搜索

Php 用拉威尔搜索,php,jquery,mysql,laravel,search,Php,Jquery,Mysql,Laravel,Search,我正在尝试搜索多个模型。我已经设置了路由和html表单,并且正在控制器中成功接收数据。现在,我想查询多个列,并将结果作为一个雄辩的or数组 实现这一目标的正确途径是什么 public function search(Request $request) { $searchTerm = $request->search; // I want to search.. Content::where('value', '%' . $searchTerm . '%')-

我正在尝试搜索多个模型。我已经设置了路由和html表单,并且正在控制器中成功接收数据。现在,我想查询多个列,并将结果作为一个雄辩的or数组

实现这一目标的正确途径是什么

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

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

你只是把结果放在一个变量里

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..
}

首先,向查询中添加
like
。然后,如果需要数组,请使用
toArray()
方法并合并结果:

$result1 = Content::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray();
$result2 = BlogPost::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray();
$result = array_merge($result1, $result2);
如果要获取集合,只需获取数据并将其与helper合并。

使用
merge()

另一种选择是联合:


非常感谢。我有个问题。我尝试使用
{{$result}}
但是用这个方法无法得到它。实现这一目标的正确途径是什么?另外,使用
merge()
而不是
array\u merge()
会引发我“调用未定义的函数App\Http\Controllers\merge()”@senty here
$result是一个数组或集合,因此需要使用
foreach($result as$oneRow)
对其进行迭代,然后使用
{$oneRow->value}获取循环中的数据
。您可以通过将
{{dd($result)}}
放入视图来查看
$result
的结构。您可以在这一行的末尾添加分号
$searchTerm=$request->search?与@senty问题有什么不同吗?我只看到了不同的列和值。
 $contents = Content::where('column', '%' . $searchTerm . '%')->get();
 $blogs = BlogPost::where('column', '%' . $searchTerm . '%')->get();
 $contents->merge($blogs);