默认情况下,Nova 使用资源的数据库列搜索您的资源。但是,这可能会变得效率低下,并且缺乏专用搜索引擎提供的强大模糊匹配功能的支持。
出于这个原因,Nova 与 Laravel Scout 无缝集成。当将 Laravel\Scout\Searchable
特性附加到与 Nova 资源关联的模型时,Nova 将在对该资源执行搜索时自动开始使用 Scout。无需其他配置。
如果您希望在执行搜索查询之前对 Laravel\Scout\Builder
实例调用方法,您可以在资源上覆盖 scoutQuery
方法
use Laravel\Nova\Http\Requests\NovaRequest;
/**
* Build a Scout search query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Laravel\Scout\Builder $query
* @return \Laravel\Scout\Builder
*/
public static function scoutQuery(NovaRequest $request, $query)
{
return $query;
}
您可以通过在与 Scout 可搜索模型关联的资源类上定义 scoutSearchResults
属性来自定义从 Scout 搜索引擎返回的搜索结果数量
/**
* The number of results to display when searching the resource using Scout.
*
* @var int
*/
public static $scoutSearchResults = 200;
您可以通过在资源类上定义 usesScout
方法来禁用特定资源的 Scout 搜索支持。当禁用 Scout 搜索支持时,即使关联的资源模型包含 Scout Searchable
特性,也将使用简单的数据库查询来搜索给定资源
/**
* Determine if this resource uses Laravel Scout.
*
* @return bool
*/
public static function usesScout()
{
return false;
}