阅读(596) (11)

Laravel 8 搜索

2021-07-09 14:25:13 更新

你可以使用 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();