【问题标题】:Simple search in laravellaravel 中的简单搜索
【发布时间】:2017-03-23 09:33:45
【问题描述】:

我正在尝试在我的小型 laravel 项目中构建一个搜索系统,但考虑到我还是一个初学者,我不知道这应该如何工作..

基本上,我有一个控制器,它返回一个包含所有用户的索引页面。在索引页面中,我有多个选择标签,您可以在其中选择一个选项并过滤用户。

这是我的索引方法:

public function index(){

  $users = User::all();
  $service = Service::all();

  return view('browse.index', compact('users','service'));
}

现在,我在用户和服务之间建立了关系。所以,每个用户都有很多服务。考虑到这一点,当我构建搜索功能时,我希望能够访问用户服务。 像这样:

  $category = $request->input('category');

  foreach ($users as $user) {
    $serviceFound = $user->service->where('category', 'LIKE', '%' . $category . '%');
  }

当然这不起作用,因为考虑到我的索引有一条获取路线,我不知道如何设置表单,所以我可以使用 $request.. 我希望这很清楚......也许你们可以帮助我设置表单/路线并让我清楚我应该如何做到这一点......

【问题讨论】:

  • 也许,如果您想在视图中获得最佳和最简单的过滤选项,请尝试使用数据表。

标签: laravel laravel-5 laravel-5.4


【解决方案1】:

同样使用GET 构建一个简单的表单。简单的例子

<form action="" method="GET">
    <input type="text" name="category" required/>
    <button type="submit">Submit</button>
</form>

在你的控制器中你做

public function index(Request $request){
    $category = $request->input('category');

    //now get all user and services in one go without looping using eager loading
    //In your foreach() loop, if you have 1000 users you will make 1000 queries

    $users = User::with('services', function($query) use ($category) {
         $query->where('category', 'LIKE', '%' . $category . '%');
    })->get();

    return view('browse.index', compact('users'));
}

只有在您正确设置关系的情况下,急切加载才会起作用。
保持现在的路线不变。

【讨论】:

  • 我刚试过这个,但我收到一个错误:mb_strpos() 期望参数 1 是字符串,给定对象.. 我不确定这是什么意思..
  • 哦,尝试从闭包中删除return。我想我错误地添加了return $query-&gt;...。它应该是$query-&gt;...,没有返回。请再试一次。
【解决方案2】:

在您的控制器中:

public function index(\Request $request)
{
    return $request::all();
}

在您的路线中:

Route::get('searchtest', 'SearchController@index');

示例网址:

http://localhost:8000/searchtest?search=search_string&category=socks

最后是输出

{
  "search": "search_string",
  "category": "socks"
}

您也可以通过$category = $request::get('category'); 仅获取类别作为字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多