Mysql 在Laravel 6中搜索
我在Laravel 6中的搜索方法有问题 我的数据库有一个表products,我的搜索方法查找Mysql 在Laravel 6中搜索,mysql,laravel,search,eloquent,Mysql,Laravel,Search,Eloquent,我在Laravel 6中的搜索方法有问题 我的数据库有一个表products,我的搜索方法查找slug属性来完成这项任务,问题是当我以其他顺序搜索产品名称时 有这个产品“FONE XIAOMI”,如果我这样搜索,会正确返回产品。 但是如果我搜索“小米坊”,就没有结果了。 我做错了什么 搜索方法: public function autosearch($slug) { if(mb_strlen($slug,'utf-8') > 1){ $search = ' '.$
slug
属性来完成这项任务,问题是当我以其他顺序搜索产品名称时
有这个产品“FONE XIAOMI”,如果我这样搜索,会正确返回产品。
但是如果我搜索“小米坊”,就没有结果了。
我做错了什么
搜索方法:
public function autosearch($slug)
{
if(mb_strlen($slug,'utf-8') > 1){
$search = ' '.$slug;
$searchLocale = $this->storeLocale->locale;
if (Session::has('language') && $this->storeSettings->is_language)
{
$searchLocale = Language::find(Session::get('language'))->locale;
}
$prods = Product::byStore()->isActive();
$prods = $prods->where(function($query) use($slug, $search, $searchLocale){
$query->where('ref_code', 'like', "%{$slug}%")
->orWhereTranslationLike('name', "%{$search}%", $searchLocale)
->orWhereTranslationLike('name', "{$slug}%", $searchLocale);
})->take(10)->get();
return view('load.suggest',compact('prods','slug'));
}
return "";
}
数据库中的产品段塞:
fone-xiaomi-lxq6540vxj
您能否显示
或where translationlike()
所做的事情,因为我有一个包含产品名称的产品翻译表,因此如果我需要查询名称,必须来自此表,而不是产品表。有两种方法可以使用explode&-,来分隔单词,或者另一种方法是使用MySQL提供的全文搜索,您甚至可以使用最新的全文搜索工具