dzava / global-search
0.1.0
2019-10-03 19:14 UTC
Requires
- php: ^7.1
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
Requires (Dev)
- larapack/dd: ^1.0
- mockery/mockery: ^1.2
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^7.0
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)。有关更多信息,请参阅 许可文件。