如何在Laravel和psql上搜索带有特殊字符的框搜索记录

时间:2017-12-21 19:35:06

标签: php laravel psql

我有一个问题,而且,我有一个盒子搜索,所有用户都可以从数据库中的表中搜索记录,问题在于特殊字符,因为当数据库中的记录看起来像这样“Canción”并且用户输入并搜索“Cancion”,结果为null,并且没有得到任何结果,但是很明显,如果他们输入“Canción”,他们就会获得标题为Canción的所有记录。功能就是这个;我正在使用ILIKE进行比较,但并没有全力以赴。我正在使用postgres。

public function scopeSearch($query, $search, $option)
    {
        if ($search !="")
        {
            if ($option == 'all')
            {
                 $query->where('title', 'Ilike', '%' . $search . '%')
                 ->orWhere('author', 'Ilike', '%' . $search . '%')
                 ->orWhere('description', 'Ilike', '%' . $search . '%')
                 ->orWhere('keywords', 'Ilike', '%' . $search . '%')
                 ->orWhere('section', 'Ilike', '%' . $search . '%');
            }
            else
            {
                $query->where($option, 'ILIKE', '%' . $search . '%');
            }

        }
    }

感谢您的帮助。我会感激不尽的

1 个答案:

答案 0 :(得分:1)

这不是单独使用Laravel可以直接解决的问题。也许Postgres的无声功能可以解决问题。我自己从未使用它,但我认为它可能就是你要找的东西。

https://www.postgresql.org/docs/9.1/static/unaccent.html