Laravel 5.5 производит поиск нескольких объектов - PullRequest
0 голосов
/ 04 июня 2018

У меня есть проект Laravel 5.5.Идея проекта заключается в создании поисковой страницы для поиска информации о Второй мировой войне.У меня есть данные о солдатах, исторических документах и ​​боях.

Идея страницы поиска состоит в том, чтобы ввести одно слово или набор слов (как в Google) и отфильтровать имена солдат, документов и боев в одном запросе..

Я расследовал, но все, что я нашел, - это поиск по одному объекту, и мне нужен поиск по трем объектам.

Я видел официальную документацию Laravel * 1007.*https://laravel.com/docs/5.5/scout,, но, похоже, работает на одну сущность.

Моя база данных - реляционная MySQL.Есть ли способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Вы можете сделать это с моим пакетом, если вы готовы добавить Elasticsearch в свой проект https://github.com/matchish/laravel-scout-elasticsearch#search-amongst-multiple-models

0 голосов
/ 04 июня 2018

Нет предпочтительного способа поиска во всех моделях, однако, если вы хотите выполнить поиск по нескольким моделям, вам нужно будет создать таблицу 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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...