Laravel 5.5 / Scout: как расширить Scout для использования объединений?

Я использую Laravel / Scout / Elasticsearch через https://packagist.org/packages/babenkoivan/scout-elasticsearch-driver и у меня такая ситуация

  1. Для поиска я должен использовать такую ​​модель:

    $visits = Visit::search("canada")->with(['origin', 'profile', 'user'])->paginate(10);

Это работает очень хорошо.

  1. Как вы можете видеть, эта модель связана с тремя другими таблицами: происхождение (страны), профиль и пользователи. По тому, как все настроено, я могу найти «Канаду» и получить все посещения, которые пришли из Канады, что тоже хорошо.
  2. Результат отображается в сетке с использованием paginate (), что тоже хорошо работает.
  3. Однако, если я хочу отсортировать сетку по происхождению — для всего, что я прочитал и пробовал до сих пор — я не могу использовать $model->with(...) подход. Вместо этого я должен использовать что-то вроде

    $visits = DB::table('visits')
    ->join('origins', 'origins.id', 'visits.origin_id')
    ->orderby($sort_column, $sort_az_za)
    ->paginate(10);

  4. Это то, что search () не будет работать с DB::table('visits')
    синтаксис и
    Visit::search("canada")->with(....)...
    Подход не позволяет мне сортировать по полю, которого нет в таблице посещений.

Вопрос заключается в следующем: как я могу искать и сортировать результаты по любому полю, который я хочу?

Я подумал, что должно быть возможно расширить Scout для поиска в DB :: table (‘TABLE’) или попытаться сортировать напрямую через ES — хотя я бы предпочел оставить весь код привязанным к «пути Laravel».

Если расширение DB :: table (‘TABLE’) является способом, может кто-нибудь указать мне, с чего начать?

Кроме этого, есть еще идеи?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]