在 Laravel Eloquent Query 中使用 unaccent PostgreSQL 函数

Posted

技术标签:

【中文标题】在 Laravel Eloquent Query 中使用 unaccent PostgreSQL 函数【英文标题】:Use unaccent PostgreSQL function within Laravel Eloquent Query 【发布时间】:2019-10-19 22:36:25 【问题描述】:

在尝试从数据库中检索记录时,我无法使用 pgsql 扩展 unaccent。

我在我的应用程序中设置了一个动态搜索,它使用 Ajax 发送用户在字段中键入的内容以及选择的字段。在将字符串发送到我的控制器之前,我将字符串中的每个重音都替换为 javascript 函数。

我的问题是我不知道如何让 postgre 明白它应该忽略重音符号。

我尝试使用 Eloquent 的 whereRaw 来使用 unaccent(我激活的)功能,但没有成功。

->whereRaw("unaccent(".$request->field.") ILIKE '".$request->search."'")

【问题讨论】:

“没有成功”到底是什么意思? 【参考方案1】:

打开 PostgreSQL,选择数据库并执行以下命令:

CREATE EXTENSION unaccent;

$query->whereRaw("unaccent(".$request->field.") ilike unaccent('%".$request->search."%')");

【讨论】:

以上是关于在 Laravel Eloquent Query 中使用 unaccent PostgreSQL 函数的主要内容,如果未能解决你的问题,请参考以下文章

将 MariaDB 语句转换为 Laravel4 Eloquent-Query

laravel 5.1 中 Eloquent 和 Query Builder 有啥区别?

如何使用 Eloquent 在 Laravel 中开始查询?

Laravel Eloquent 和 Query Builder “with (nolock)”

Laravel:使用 Query Builder 或 Eloquent ORM 时在每次插入/更新时执行一些任务

Laravel Eloquent Query - 限制计数()