Larvel Scout определил, как войти в систему через Auth :: user (), не работает | Проблемы или техника неверны - PullRequest
0 голосов
/ 05 мая 2019

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

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

Модели связаны с помощью Eloquent Relationships, они работают при обычном доступе с помощью метода 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, подобный Auth::user()

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

1 Ответ

0 голосов
/ 05 мая 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...