Laravel搜索模型

时间:2018-03-07 07:58:50

标签: laravel

我是laravel的新手,已经完成了laravel 5.6最新版本的项目

但是,学习和实现的唯一待处是搜索功能,它是每个应用程序的核心。我编写的应用程序是一个庞大的项目,我不想搞砸它,所以想了解搜索功能如何工作,以便在项目的多个部分实现。

让我们说我有以下模型1.Country 2.State 3.City 4.Professional_Categories 5.Professionals和我相应地在模型中添加了关系

我通常使用以下代码

获取记录
public function index()
{
  $categories = ProfessionalCategory::all();
  $topprofessionals = Professional::where('status', 1)->limit(12)->get()->sortByDesc('page_views');
  $professionals = Professional::where('status', 1)->latest()->paginate(9);
  return view('professionals.index',compact('professionals', 'categories', 'topprofessionals'));
}

我可以拉出国家,州和城市,因为我提到了类别,并且我可以在选择框中显示它们。或者我也可以使用拔毛(' name',' id')也很好用。但我从未尝试过搜索查询。

我想在专业人士页面上找到一个搜索表单,用户可以选择国家,州,城市,类别并在地点和专业名称中键入关键字以查找专业人士。我的下一步是学习国家,州和城市的依赖性下拉。

结果如何显示在目前我正在使用foreach获取记录的视图文件中($ professional as $ professional)

我不需要代码,只是一个关于如何在laravel中工作的基本示例。一旦我学习了基础知识,我想从数据库和类似的东西实现自动建议。还有一个表单来搜索所有模型。

2 个答案:

答案 0 :(得分:3)

听起来您需要跨多个表和相关列进行全文搜索。我建议使用Laravel Scout或类似的服务(例如elastisearch)。

这些将以一种允许快速有效的模糊搜索的方式索引您的记录。以Scout为例,您可以直接查询模型,如:

$orders = App\Order::search('Star Trek')->get();

Searching with Scout

这将使您免于使用LIKE编写大量查询,这会很快变得非常缓慢和低效。

答案 1 :(得分:1)

使用 Eloquent ,您可以在Controller中执行以下操作:

public function search(Request $request)
{
    $countries = Country::where('name', 'like', '%' . $request->search_value . '%')->get();
}

这将返回其名称包含用户提供的search_value的国家/地区。