代码之家  ›  专栏  ›  技术社区  ›  blueink

拉维模糊字符串搜索

  •  1
  • blueink  · 技术社区  · 6 年前

    我对搜索有问题。 我可以进行基本的搜索。我想进行更高级的搜索 喜欢搜索。

    例如。数据库的表在'pn'列有“aaa”字符串。 我想显示记录时,我键入“AAA”搜索文本区。

    我在下面做的,但没用。 有人能告诉我有什么问题吗?

    public function show(Request $request)
    {
        if (isset($request->pn)) {
            $param = ['pn' => $request->pn];
            $item = DB::select('select * from sts where pn collate utf8_unicode_ci like '%'.$pn.'%'', $param);      
        } else {
            $items = DB::select('select * from sts');
        }
        return view('pn.searchshow', ['items' => $items]);
    }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Jonas Staudenmeir    6 年前

    绑定必须包括 % 通配符:

    $param = ['pn' => '%'.$request->pn.'%'];
    $item = DB::select('select * from sts where pn collate utf8_unicode_ci like :pn', $param);
    
        2
  •  0
  •   Davit Zeynalyan    6 年前
    public function show(Request $request)
    {
        $query = \DB::table('sts');
        if (isset($request->pn)) {
            $query->where(DB::raw('`pn` callate utf8_unicode_ci'), 'like', '"%' . $request->pn . '%"');
        }
    
        $items = $query->get();
        return view('pn.searchshow', ['items' => $items]);
    }