Область действия Larvel Scout для пользователя, вошедшего в систему, через Auth::user() не работает | Проблемы или неправильная техника

По сути, я установил Laravel Scout с TNT Search, все настройки правильные и работают, у меня даже есть хорошая панель поиска для работы с рабочим процессом ajax.

Но результаты моделей взяты из всей коллекции базы данных, где мое требование состоит только в том, чтобы показать результаты записи записей, созданных пользователем, который в данный момент находится в сеансе.

Модели связаны через красноречивые отношения, они работают при обычном доступе через метод Auth::user(), но поиск разведчика, похоже, не привязан ни к одной из моделей через пример Auth::user():

App\CourtCase::search($request->q)->get();

Вышеприведенное работает, но вернет любой результат в модели (и базовой таблице) независимо от того, принадлежит ли запись или связана с пользователем, вошедшим в систему. Однако мое намерение состоит в том,

Auth::user()->courtcase()->search($request->q)->get();

Ошибка, которую я получаю, следующая

message Call to undefined method Illuminate\Database\Eloquent\Relations\HasMany::search()
exception   BadMethodCallException
file    /home/vagrant/code/legistant/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php

Очевидно, это связано с тем, что Laravel Scout не подключен и не доступен через метод Auth::user(), я могу написать код для фильтрации результатов после их возврата, но представьте себе накладные расходы на результаты до того, как они будут доступны пользователю, это кажется пустой тратой всего этого. запрос, есть ли способ охватить пользователя, а затем использовать поиск Laravel scout, аналогичный Auth::user()

Можно ли изменить поведение аутентификации, чтобы прикрепить разведчика, будет ли он перезаписан с помощью обновления композитора Laravel?


person Miyuru Dharmage    schedule 05.05.2019    source источник


Ответы (1)


Итак, по состоянию на 05.05.2019 Laravel Scout не имеет метода определения области запросов к моделям, связанным с пользователем Auth, потому что, честно говоря, это довольно сложная логика для обработки, особенно потому, что отношения произвольны, а ключи могут быть разными, область видимости функция, построенная внутри или снаружи, будет иметь одинаковую вычислительную стоимость, здесь нет оптимизации

$results = App\CourtCase::search($request->q)->where('lawyer_id', Auth::id())->get();

Вот как я решил эту проблему, прикрепив условие where к результату поиска, где он будет отображать только детали, соответствующие ключу, если вы изменяете существующий код приложения, помните, что изначально разведчик может показывать кешированные результаты, которые не соответствуют фильтру , что меня смутило, пока я не обновил код

Лучший код приветствуется

person Miyuru Dharmage    schedule 05.05.2019