Php 使用LIKE搜索函数Laravel 5.2

Php 使用LIKE搜索函数Laravel 5.2,php,laravel-5.2,Php,Laravel 5.2,最近我一直在学习lavavel,我对laravel的基本功能有了相当的了解,现在我想能够从我的数据库中搜索记录,但我似乎不知道怎么做 这是我为它制作的控制器功能 public function search() { //searching on producten in the producten database table $producten = DB::table('producten') ->where('naam', 'LIK

最近我一直在学习lavavel,我对laravel的基本功能有了相当的了解,现在我想能够从我的数据库中搜索记录,但我似乎不知道怎么做

这是我为它制作的控制器功能

 public function search()
{
    //searching on producten in the producten database table

    $producten = DB::table('producten')
                ->where('naam', 'LIKE', '%$query%')
                ->get();
}
这就是我的观点

 {!! Form::open(['route' => 'producten.index', 'method' => 'GET', 'class' => 'search']) !!}

        {!! Form::text('naam')!!}

     {!! Form::close() !!}

如果我在浏览器中打开视图,并在文本框中键入产品名称,url将更改为producten?naam=ProductNaam,但屏幕上没有显示任何不同,我希望这是足够的信息来帮助我,如果我需要添加问题,请告诉我

您的视图是正确的,但控制器不接受任何内容

您当前正在搜索名称中包含“query”的产品

因此,您必须在搜索方法中接受请求

像这样:

public function search(Request $request)
$request->naam
将提供您在文本字段中键入的值。显然,您仍然需要验证该值

我还建议对模型进行过滤,这样您的代码将更具可读性

 Product::where('naam', 'LIKE', "%$request->naam%")->get();
你应该阅读这一页,这将使你更好地理解你的问题

只需修复此处的引号:
->where('naam','LIKE',“%$query%”)

  • 单引号:其内容被视为字符串文字
  • 双引号:允许使用特殊字符,如$,\n,\t

更多信息

您的控制器功能应如下所示:

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

您是否尝试过使用函数中的
method=“POST”
在何处定义
$query
?$query必须是有效值,没有定义或检索。您的评论是否意味着我必须添加Request$Request并将查询更改为以下内容:DataBaseTable::Where('naam','LIKE',“%$Request->naam%”->get()?重要的部分是添加Request$Request和$Request->naam,最后一行只是DB::table('producten')的一个替代。只有当您有一个名为Product的模型时,这才有效。在视图中,['route'=>'producten.index']引用了它使用的控制器函数,对吗?是的,因此应该指向您的搜索方法,而不是索引方法。我建议看这个系列:。它是免费的,对你会有很大帮助。