Laravel 8 搜索
你可以使用 search
方法来搜索模型。search 方法接受一个用于搜索模型的字符串。你还需要在搜索查询上链式调用 get
方法,才能用给定的搜索语句查询与之匹配的 Eloquent 模型:
$orders = App\Models\Order::search('Star Trek')->get();
Scout 搜索返回 Eloquent 模型的集合,因此你可以直接从路由或控制器返回结果,它们会被自动转换成 JSON 格式:
use Illuminate\Http\Request;
Route::get('/search', function (Request $request) {
return App\Models\Order::search($request->search)->get();
});
如果你想在它们返回 Eloquent 模型前得到原结果,你应该使用 raw
方法:
$orders = App\Models\Order::search('Star Trek')->raw();
搜索查询通常会在模型的 searchableAs
方法指定的索引上执行。当然,你也可以使用 within
方法指定应该搜索的自定义索引:
$orders = App\Models\Order::search('Star Trek')
->within('tv_shows_popularity_desc')
->get();