繁体   English   中英

Laravel 5.5搜索多个实体

[英]Laravel 5.5 make a search of multiple entities

我有一个Laravel 5.5项目。 该项目的想法是建立一个搜索页面,以查找有关第二次世界大战的信息。 我有士兵,历史文件和战斗的数据。

搜索页面的想法是输入一个单词或一组单词(例如在Google中),并在一个查询中过滤士兵,文件和战斗人员的姓名。

我一直在调查,但发现的全部内容都是关于从一个实体进行搜索,而我需要搜索三个实体。

我已经看过Laravel的官方文档https://laravel.com/docs/5.5/scout ,但似乎适用于一个实体。

我的数据库是关系MySQL。 有什么办法解决这个问题?

没有一种在所有模型中进行搜索的首选方法,但是,如果要在多个模型上进行搜索,则必须创建一个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
});

如果您准备将Elasticsearch添加到您的项目中,则可以使用我的软件包进行操作。https://github.com/matchish/laravel-scout-elasticsearch#search-amongst-multiple-models

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM