Laravel5 - 如何正确编写搜索查询字符串的路由?

时间:2016-11-15 19:04:59

标签: php mysql laravel search laravel-5

我正在开发一个应用程序,我应该在包含用户的表上执行搜索。但是,我无法弄清楚如何正确地组成路线以便将视图附加到控制器并返回。我的代码如下: 观点:

<form action='{{url(' users')}}' method='GET'>
<input class='form-control' type="text" name="keyword" placeholder="Search for user...">
</form>

路线:

Route::get('users?keyword={$keyword}', 'UsersController@search');

UsersController中的search():

public function search()
{
    $keyword = Request::get('keyword');

    $users = User::where("username", "LIKE","%$keyword%")
            ->orWhere("firstname", "LIKE", "%$keyword%")
            ->orWhere("lastname", "LIKE", "%$keyword%")
            ->orWhere("email", "LIKE", "%$keyword%")
            ->orWhere("phone", "LIKE", "%$keyword%")->get();

    return view('search', compact('users'));

}

有人可以告诉一下正确的语法是什么吗?提前谢谢!

2 个答案:

答案 0 :(得分:4)

您的路线应为:

 Route::get('users', 'UsersController@search');

在您的控制器中,您可以使用请求对象的get函数获取查询参数,您已经在使用它。

您可以通过以下任何函数获取参数:

request()->get('keyword');
request()->input('keyword');
request()->query('keyword');

<强>更新

在文件顶部添加以下导入:

use Illuminate\Http\Request;

然后在你的控制器函数中将其注入:

public function search(Request $request)
{
    $keyword = $request->input('keyword');
    // or
    $keyword = $request->query('keyword');

    // rest of the code
}

答案 1 :(得分:2)

试试这个:

  Route::get('users', 'UsersController@search');
  

控制器

public function search(Request $request) {
    $keyword = $request->get('keyword');

    $users = User::where("username", "LIKE","%$keyword%")
            ->orWhere("firstname", "LIKE", "%$keyword%")
            ->orWhere("lastname", "LIKE", "%$keyword%")
            ->orWhere("email", "LIKE", "%$keyword%")
            ->orWhere("phone", "LIKE", "%$keyword%")->get();

    return view('search', compact('users'));
}