我有一个laravel5.5项目。这个项目的想法是制作一个搜索页面来查找有关第二次世界大战的信息。我有士兵的资料,历史文件和战斗。搜索页面的想法是输入一个或一组单词(就像在google中一样),并在一个查询中过滤士兵、文档和战斗人员的姓名。我一直在调查,但我所发现的只是从一个实体搜索,我需要搜索三个实体。我看过拉威尔的官方文件https://laravel.com/docs/5.5/scout,但似乎对一个实体有效。我的数据库是关系型mysql。有办法解决这个问题吗?
insrf1ej1#
如果您准备好将elasticsearch添加到您的项目中,您可以使用我的包来完成https://github.com/matchish/laravel-scout-elasticsearch#search-在多个模型中
wdebmtf22#
没有在所有模型中进行搜索的首选方法,但是如果要在多个模型上进行搜索,则必须创建一个 search 表,该表将存储所有记录的标题或其他列,您希望搜索这些列,并使其成为多态关系,然后将用于其他模型进行链接,然后您可以通过该关系获取结果。如:后模型:
search
public function search(){ $this->morphMany(Search::class,'searchable'); }
搜索模型:
public function searchable() { return $this->morphTo(); }
然后您将对搜索模型进行搜索并获取如下结果
$search->search('search text here')->map(function($data){ return $data->searchable; // Fetch post });
2条答案
按热度按时间insrf1ej1#
如果您准备好将elasticsearch添加到您的项目中,您可以使用我的包来完成https://github.com/matchish/laravel-scout-elasticsearch#search-在多个模型中
wdebmtf22#
没有在所有模型中进行搜索的首选方法,但是如果要在多个模型上进行搜索,则必须创建一个
search
表,该表将存储所有记录的标题或其他列,您希望搜索这些列,并使其成为多态关系,然后将用于其他模型进行链接,然后您可以通过该关系获取结果。如:后模型:
搜索模型:
然后您将对搜索模型进行搜索并获取如下结果