如何将 'UPPER' 应用于 Eloquent 查询?

How to apply 'UPPER' to Eloquent query?

如何在 Laravel 的 Eloquent 中执行此操作?

我希望我的 sql 输出是这样的:

SELECT * FROM users UPPER(email) LIKE UPPER("%email%").

这是我要修改的代码:

$users = User::where('email', 'like', '%'.request('email').'%')->paginate(50);

我试过这样做但没有成功:

$users = User::where('UPPER(email)', 'like', 'UPPER("%'.request('email').'%")')->paginate(50);

也许可以使用 where Raw

User::whereRaw('UPPER(`email`) LIKE ? ',[trim(strtoupper($email)).'%'])->paginate(15);

这 post 看起来像你想要做的。

您的 email 很有可能不在区分大小写的排序规则中,在这种情况下,无论存储的大小写(或电子邮件表达式)如何,您现有的未修改代码都将匹配。

如果您 email 区分大小写而不是强制 email 和模式的大小写,您可以强制表达式不区分大小写,例如:

select * from users where email LIKE '%user%' COLLATE utf8mb4_unicode_ci

参考:fiddle

注意:可用排序规则取决于 mysql 的主要版本。 show collation 但是会列出它们。

注意:抱歉,我不知道这个Eloquent的语法