dzava / global-search

0.1.0 2019-10-03 19:14 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:44 UTC


README

安装

您可以通过 composer 安装此包

composer require dzava/global-search

可选地发布配置

php artisan vendor:publish --tag=config --provider="Dzava\GlobalSearch\GlobalSearchServiceProvider"

用法

searchableFields 方法添加到可搜索模型。

class User extends Model {
	public function searchableFields() {
    	return ['name'];
    }
}

class Post extends Model {
	public function searchableFields() {
    	return ['title'];
    }
}

执行搜索

use Dzava\GlobalSearch\GlobalSearch;

$results = (new GlobalSearch())->withModels([User::class, Post::class])->search('Doe');

//  [
//      'users' => [
//          ['name' => 'John Doe', 'email' => 'john@example.com'],
//          ['name' => 'Jane Doe', 'email' => 'jane@example.com']
//  ],
//      'posts'  => [
//          ['title' => 'Who is John Doe', 'slug' => 'who-is-john-doe'
//      ]
//  ]

要限制每个模型的结果数量,请使用 limit($limit) 方法。给定限制为 0 时,将返回所有匹配的结果。

如果模型没有找到匹配的记录,则该组将从结果中省略。要包含空组,请使用 withEmpty() 方法。

在注册模型时,您可以覆盖默认的组键。

GlobalSearch::registerModels(['Accounts' => User::class, Post::class]);

如果您不想对结果进行分组,请使用 withoutGroups() 方法。

格式化结果

结果使用模型的 toArray 方法进行格式化。您可以通过更改配置文件中的 toArray 选项来使用不同的方法。如果模型中不存在该方法,则将回退到 toArray

您可以使用 withoutFormatting() 方法完全禁用格式化,在这种情况下将返回模型。

自定义查询

您可以通过在您的模型中实现 searchQuery 方法来自定义搜索查询。该方法将接收两个参数,即查询构建器实例和搜索词,并且应该返回要执行的查询。

当模型使用 Laravel\Scout\Searchable 特性时,将自动使用 scout。

授权

当可用时,该包将使用 Laravel 的授权策略。如果找到策略,则检查策略的授权方法。您可以通过设置 policy-method 配置选项来更改使用的授权方法。

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件