#php #laravel
#php #laravel
Вопрос:
Я пытаюсь выполнить поиск, однако у меня возникли проблемы с учетом регистра, как я могу сделать его более чувствительным к регистру.
$query->where(function($query) use ($service_name) {
$query->where('users.options->company_name', 'LIKE', '%' . $service_name . '%');
});
я попытался использовать что-то подобное, поскольку это было предложено мне, однако это не решает мою проблему.
$query->where(function($query) use ($service_name) {
$query->where('LOWER(users.options->company_name)', 'LIKE', '%' . strtolower($service_name) . '%');
});
Комментарии:
1. Вы получаете какую-либо ошибку?
2. если вы используете Postgres, есть ILIKE.
Ответ №1:
Я вижу, у вас есть столбец json,
$query->whereRaw("users.options->company_name like '%".$service_name."%'", [$service_name]);
Это должно решить вашу проблему
Комментарии:
1. не работает SQLSTATE[42000]: синтаксическая ошибка или нарушение доступа
2. удалите квадратные скобки рядом с привязкой. и проверьте
3. ваш ответ поможет решить эту проблему. но я решил это другим способом. пожалуйста, проверьте мой ответ. Спасибо.
Ответ №2:
Из-за столбца json
$query->whereRaw("LOWER(users.options->'$.company_name') LIKE LOWER('%$service_name%')");
Вы можете использовать LOWER / UPPER для решения проблемы с учетом регистра.
синтаксис для использования ключа столбца json column->'$.json_key'