如何将 '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的语法
如何在 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的语法