使用 Postgres 查询在 Laravel 中转换为 LOWER

Convert to LOWER in Laravel with Postgres query

我实现了一个搜索方法,我想将值从 WHERE 转换为小写,但从我发现到现在,没有任何效果。

这适用于区分大小写

$query->where('customers.account_name', 'like', '%' . $request->get("filter") . '%')

这是我尝试过但错误的方法之一。

query->where('LOWER(`example.account_name`)', 'like', '%' . 'LOWER(` . $request->get("filter") . ')' . '%')

如果您需要使用 SQL 逻辑,例如 LOWER(),您不能使用 ->where(),因为它与数据库无关(适用于所有数据库配置)。

您可以使用 ->whereRaw(),但如果您更改数据库类型(即 mysql 为 postgres 或 mongo,等等)它将不起作用:

$query->whereRaw('LOWER(`example.account_name`) LIKE "%'.strtolower($request->input("filter")).'%"');

如果您 运行 一个 dd($query->toSql()),您可以看到查询将生成的原始 SQL。

在 PostgreSQL 中是 ILIKE ,它不区分大小写,所以我不需要这两个值都较低。

$query->where('customers.account_name', 'ILIKE', $request->get("filter") )