logo

Scout 集成

默认情况下,Nova 使用资源的数据库列搜索您的资源。但是,这可能会变得效率低下,并且缺乏专用搜索引擎提供的强大模糊匹配功能的支持。

出于这个原因,Nova 与 Laravel Scout 无缝集成。当将 Laravel\Scout\Searchable 特性附加到与 Nova 资源关联的模型时,Nova 将在对该资源执行搜索时自动开始使用 Scout。无需其他配置。

自定义 Scout 搜索

如果您希望在执行搜索查询之前对 Laravel\Scout\Builder 实例调用方法,您可以在资源上覆盖 scoutQuery 方法

php
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 搜索结果

您可以通过在与 Scout 可搜索模型关联的资源类上定义 scoutSearchResults 属性来自定义从 Scout 搜索引擎返回的搜索结果数量

php
/**
 * The number of results to display when searching the resource using Scout.
 *
 * @var int
 */
public static $scoutSearchResults = 200;

您可以通过在资源类上定义 usesScout 方法来禁用特定资源的 Scout 搜索支持。当禁用 Scout 搜索支持时,即使关联的资源模型包含 Scout Searchable 特性,也将使用简单的数据库查询来搜索给定资源

php
/**
 * Determine if this resource uses Laravel Scout.
 *
 * @return bool
 */
public static function usesScout()
{
    return false;
}