使用 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") )
我实现了一个搜索方法,我想将值从 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") )