查询数据库时忽略撇号 - Laravel 5.4
Ignore apostrophes when querying database - Laravel 5.4
我的网站上有一个自动完成的搜索栏,用户可以在其中搜索旅游指南。 有些 的旅行指南有一个名字,例如:Snookie's Outfitter 如您所见,它的名字中有一个撇号。因此,当用户键入第一个单词并点击那个撇号时,查询将忽略其余部分,因为用户没有在搜索栏中插入撇号。我想知道我怎么可能忽略数据库中的那个撇号。
当有人搜索时,我的查询是这样设置的:
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 搜索查询中实现这个问题。
您需要使用 HTML::entities() 来编码您的查询正方形引号,双引号将替换为 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();
}
我的网站上有一个自动完成的搜索栏,用户可以在其中搜索旅游指南。 有些 的旅行指南有一个名字,例如:Snookie's Outfitter 如您所见,它的名字中有一个撇号。因此,当用户键入第一个单词并点击那个撇号时,查询将忽略其余部分,因为用户没有在搜索栏中插入撇号。我想知道我怎么可能忽略数据库中的那个撇号。
当有人搜索时,我的查询是这样设置的:
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 搜索查询中实现这个问题。
您需要使用 HTML::entities() 来编码您的查询正方形引号,双引号将替换为 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();
}