Как применить UPPER к запросу Eloquent? - PullRequest
0 голосов
/ 06 мая 2020

Как мне сделать это в 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);

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

используя where Raw возможно?

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

Этот пост выглядит как то, что вы пытаетесь сделать.

{ ссылка }

0 голосов
/ 06 мая 2020

Есть разумная вероятность, что ваш email не находится в сопоставлении с учетом регистра, и в этом случае ваш существующий неизмененный код будет соответствовать независимо от сохраненного регистра (или выражения электронной почты).

Если вы email с учетом регистра, а не принудительного использования регистра email и шаблона, вы можете заставить выражение быть нечувствительным к регистру, например:

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

ref: fiddle

примечание: доступные параметры сортировки зависят от основной версии mysql. Однако show collation перечислит их.

примечание: извините, я не знаю синтаксиса Eloquent для этого

...