Игнорировать апострофы при обращении к базе данных — Laravel 5.4

На моем сайте есть панель поиска с автозаполнением, где пользователи могут искать путеводители. Немного из путеводителей есть название, например: Экипировщик Снукки Как видите, в названии есть апостроф. Поэтому, когда пользователь вводит первое слово и нажимает этот апостроф, запрос игнорирует остальные, потому что пользователь не вставил апостроф в строку поиска. Мне было интересно, как я мог игнорировать этот апостроф в базе данных.

Вот как настраивается мой запрос, когда кто-то ищет:

public function index()
{
$query = request()->get('query');

$results = Listing::searchAndCache($query);

return view('search.index', compact('results', 'query'));
}

Моя модель листинга:

  public static function searchAndCache($query)
{
return self::whereHas('locations', function($m) use($query) {
$m->where('region', 'like', '%'.$query.'%');
$m->orWhere('country', 'like', '%'.$query.'%');
$m->orWhere('city', 'like', '%'.$query.'%');
$m->orWhere('county', 'like', '%'.$query.'%');
$m->orWhere('regionCode', 'like', '%'.$query.'%');
})->live()->orWhere(function($m) use($query){
$m->where('name','like','%'.$query.'%');
$m->live();
})->paginate();
}

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

0

Решение

Вам необходимо использовать HTML :: entity () для кодирования квот вашего запроса sq, и двойные кавычки будут заменены ссылками html.

public static function searchAndCache($query)
{
$query = HTML::entities($query);

return self::whereHas('locations', function($m) use($query) {
$m->where('region', 'like', '%'.$query.'%');
$m->orWhere('country', 'like', '%'.$query.'%');
$m->orWhere('city', 'like', '%'.$query.'%');
$m->orWhere('county', 'like', '%'.$query.'%');
$m->orWhere('regionCode', 'like', '%'.$query.'%');
})->live()->orWhere(function($m) use($query){
$m->where('name','like','%'.$query.'%');
$m->live();
})->paginate();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]