【问题标题】:Laravel query using LIKE does not return any resultLaravel 使用 LIKE 查询不返回任何结果
【发布时间】:2018-05-28 01:26:00
【问题描述】:

大家好,我目前遇到了这个问题。我正在尝试在 DB 上搜索某些内容,但没有返回任何结果。以下是我的代码。

搜索字符串 1 = 波士顿凯尔特人队

搜索字符串 2 = 波士顿凯尔特人队不能

DB post_title = 波士顿凯尔特人队不能让公牛队的失利影响艰难的延伸

查询

$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
            ->orderBy('post_date', 'desc')
            ->offset($offset)
            ->limit($limit)
            ->get();

搜索字符串 1 会返回结果,但搜索字符串 2 不会。

【问题讨论】:

    标签: php sql laravel orm backend


    【解决方案1】:

    简单,因为你搜索不同的字符串。

    搜索字符串 2 ".. Can't .." 使用直引号

    '

    DB post_title ".. Can't .." 使用 Curly Quotes

    供参考:Straight and curly quotes

    【讨论】:

      【解决方案2】:

      试试下面的代码:

      1) 由于can't 中的',您的代码可能会中断字符串。

      $data = $searchPost->where('post_title', 'like', "%{$search}%")
                  ->orderBy('post_date', 'desc')
                  ->offset($offset)
                  ->limit($limit)
                  ->get();
      

      【讨论】:

      • 可能会在“db”端破坏它,而不是 PHP 端..."%{$search}%" === '%'. $search .'%'
      【解决方案3】:

      我的第一个猜测是撇号可能是罪魁祸首 - 在 SQL Server 中,连接运算符是“+”,因此您可能还想确保它是正确的。也许尝试删除撇号字符:

      替换($search, '''', '')

      Microsoft SQL 中的四个单引号是单引号的转义序列。

      【讨论】:

        【解决方案4】:

        之前遇到过同样的问题

        试试这个

        $data = $searchPost->where('post_title', 'like', '"%'.$search.'%"')
                ->orderBy('post_date', 'desc')
                ->offset($offset)
                ->limit($limit)
                ->get();
        

        如您所见,前面有一个 " 开头的 % 和结尾的 % 之后的另一个。

        【讨论】:

          【解决方案5】:

          如果您仔细查看您的搜索和数据库中的 Can't,' 看起来不一样

          不能 对比 不能

          当'不一样的时候,确定是搜索不到的。很简单。

          【讨论】:

            【解决方案6】:

            必须使用 str_replace 方法来更改撇号字符

            $search = str_replace('-', ' ', urldecode($request->input('search')));
            $search = str_replace("'", "’", $search);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-04-10
              • 2013-12-24
              • 1970-01-01
              • 1970-01-01
              • 2017-05-24
              • 1970-01-01
              相关资源
              最近更新 更多