【问题标题】:Search with Laravel使用 Laravel 搜索
【发布时间】:2017-04-08 13:20:11
【问题描述】:

我正在尝试搜索多个模型。我已经设置了路由和 html 表单,并且我在控制器中成功接收了数据。现在,我想查询多个列并以 eloquent 或数组的形式获取结果。

实现这一目标的正确方法是什么?

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

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

【问题讨论】:

  • 你能在这一行的末尾添加分号$searchTerm = $request->search;吗?

标签: php jquery mysql laravel search


【解决方案1】:

使用merge()

 $contents = Content::where('column', '%' . $searchTerm . '%')->get();
 $blogs = BlogPost::where('column', '%' . $searchTerm . '%')->get();
 $contents->merge($blogs);

https://laravel.com/docs/5.3/collections#method-merge

另一个选项是联合:

https://laravel.com/docs/5.3/queries#unions

【讨论】:

    【解决方案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() helper 合并即可。

    【讨论】:

    • 非常感谢。我有个问题。我尝试使用{{ $result }},但我无法用这种方法得到它。实现它的正确方法是什么?此外,使用 merge() 而不是 array_merge() 会抛出“调用未定义函数 App\Http\Controllers\merge()”
    • @senty here $result is 一个数组或集合,因此您需要使用foreach ($result as $oneRow) 对其进行迭代,然后使用{{ $oneRow->value }} 获取循环内的数据。您可以通过将{{ dd($result) }} 放入视图中来查看$result 的结构。
    【解决方案3】:

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

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

    【讨论】:

    • @senty 问题有什么不同吗?我只看到不同的列和值。
    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 2019-05-06
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多