Laravel, поиск без учета регистра

#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'