Я использую плагин Laravel для поиска в течение нескольких месяцев, и он работает нормально. Как новая задача в одном из моих проектов, я должен добавить дополнительное условие к поиску.
Итак, моя идея состоит в том, что если пользователь заблокирован (у него есть статус == 0), чтобы не отображаться в результат поиска.
Это мой код:
PageController:
public function searchMember(Request $request, $id)
{
$this->validate($request, [
'query' => 'required',
]);
$query = $request->input('query');
$searchResults = (new Search())
->registerModel(User::class, 'first_name', 'last_name')
->perform($query);
return view('user.search', compact('searchResults'));
}
Вид:
<div class="result-count">{{ $searchResults->count() }} results found for "{{ request('query') }}"</div>
<div class="result">
@foreach($searchResults->groupByType() as $type => $modelSearchResults)
@foreach($modelSearchResults as $searchResult)
<div class="article">
<a href="{{ $searchResult->url }}">{{ $searchResult->title }}</a>
</div>
@endforeach
@endforeach
</div>
Работает нормально, но я хочу добавить параметр where (), поэтому я могу отображать только активных пользователей (статус 1). Я прочитал, если я хочу добавить условия, я должен настроить код, и я попытался так в моем контроллере:
public function searchMember(Request $request, $id)
{
$this->validate($request, [
'query' => 'required',
]);
$searchResults = (new Search())
->registerModel(User::class, function(ModelSearchAspect $modelSearchAspect) {
$modelSearchAspect
->addSearchableAttribute('first_name')
->addSearchableAttribute('last_name')
->where('status', 0); // This won't work
})->search($request->input('query'));
return view('user.search', compact('searchResults'));
}
, но я получаю эту ошибку:
Type error: Argument 1 passed to App\Http\Controllers\PageController::App\Http\Controllers\{closure}() must be an instance of App\Http\Controllers\ModelSearchAspect, instance of Spatie\Searchable\ModelSearchAspect given, called in...
Пожалуйста, помогите мне решить эту проблему.
РЕДАКТИРОВАТЬ:
ОК, я исправил ошибку, добавив
use Spatie\Searchable\ModelSearchAspect;
поверх контроллера .
Как добавить условие в searchResult?