SQL-запрос для строки с разницей только в один символ - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь сделать запрос с Laravel, но я думаю, что не могу использовать Eloquent, поэтому я должен использовать необработанные запросы.

В BD у меня есть столбец строки name, который я хочу удалить о двоеточии перед выполнением запроса. Строка: My name is: John

Я делаю запрос как where('name', $name) ничего другого мира, но в моей переменной $name нет двоеточия. Это как $name = My name is John

Я пытался сделать REPLACE, но я получаю ноль

Запрос

select * from `table` where REPLACE(`name`, ':', '') = 'My name is John' limit 1

In Eloquent

Model::whereRaw("REPLACE(`name`, ':', '') = '?'", $name)->limit(1)->first()

Я не хочу использовать sounds like, потому что у меня есть другие подобные регистры, и звуки, согласно моему опыту, очень открыты в этой части.

Любые рекомендации?

1 Ответ

0 голосов
/ 10 ноября 2019

РЕДАКТИРОВАНИЕ:

DB::raw() на первом члене вашего where(), второе слагаемое является сравнением, а третье слагаемое является фильтром.

ОРИГИНАЛ:

Вы можете использовать DB::raw() на вашем месте. Используя eloquent, вы можете сделать следующее:

$filter = 'My name is john';
$result = DB::table('table')->where(DB::raw("replace(name,':', '')"), '=', $filter)->get();

Функция DB::raw() поместит точный термин, переданный в запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...