最近我一直在学习lavvel,而且我已经对laravel中的基本功能有了理解,现在我希望能够从我的数据库中搜索记录,而我似乎无法弄清楚如何去做,
这是我为它制作的控制器功能
public function search()
{
//searching on producten in the producten database table
$producten = DB::table('producten')
->where('naam', 'LIKE', '%$query%')
->get();
}
这就是My View的样子
{!! Form::open(['route' => 'producten.index', 'method' => 'GET', 'class' => 'search']) !!}
{!! Form::text('naam')!!}
{!! Form::close() !!}
如果我在浏览器中查看视图,并在文本框中输入产品名称,则网址会更改为producten?naam = ProductNaam,但屏幕上没有显示任何不同,我希望这是足够的信息来帮助我,请告诉我是否需要在问题中添加任何内容。
答案 0 :(得分:2)
您的观点是正确的,但您的控制器并不接受任何内容。
您目前正在搜索名称中包含'查询'的产品。在里面。
因此,您必须在搜索方法中接受请求。
像这样:
public function search(Request $request)
$request->naam
会为您提供在文字字段中输入的值。显然,您仍然需要验证该值。
我还建议过滤模型,你的代码会更具可读性。
Product::where('naam', 'LIKE', "%$request->naam%")->get();
您应该阅读此页面,这将使您更好地了解您的问题 https://laravel.com/docs/5.3/requests
答案 1 :(得分:0)
只需修改引号:->where('naam', 'LIKE', "%$query%")
答案 2 :(得分:0)
将以下代码添加到您雄辩的用户模型
public function scopeSearchByKeyword($query, $keyword)
{
if ($keyword!='') {
$query->where(function ($query) use ($keyword) {
$query->where("name", "LIKE","%$keyword%")
->orWhere("email", "LIKE", "%$keyword%")
->orWhere("blood_group", "LIKE", "%$keyword%")
->orWhere("phone", "LIKE", "%$keyword%");
});
}
return $query;
}
然后你可以轻松做到
$keyword = Input::get('keyword', '');
$users = User::SearchByKeyword($keyword)->get();
答案 3 :(得分:0)
您的控制器功能应为:
public function search()
{
//searching on producten in the producten database table
$query = request()->get('naam');
$producten = DB::table('producten')
->where('naam', 'LIKE', "%$query%")
->get();
// pass the `$producten` result to your search view.
}