theamasoud / laravel-search
一个Laravel包,用于在列、多个列和JSON列中轻松搜索
v1.0.0
2022-08-31 00:07 UTC
Requires
- phpunit/phpunit: ^9.5
README
安装
首先,通过Composer安装此包。
composer require theamasoud/laravel-search
或者在你的项目composer.json文件中添加以下内容。
"require": { "theamasoud/laravel-search": "1.*", }
使用方法
特性
TheAMasoud\LaravelSearch\Searchable
将Searchable特性添加到你的模型中
namespace App\Models; use Illuminate\Database\Eloquent\Model; use TheAMasoud\LaravelSearch\Searchable; class Message extends Model { use Searchable; protected $fillable = ['name','email','subject','message']; }
常规搜索
首先,要制作常规搜索或过滤器,你应该使用search()
方法。
你应该传递两个参数:需要搜索或过滤的列,以及来自请求的请求键。
请求键
常规搜索示例
$messages = Message::search('name','search')->get();
- 在这个例子中,我正在尝试在messages表的name列中进行搜索或过滤,我将搜索的数据来自请求键search,如下所示:
($request->search)
多列搜索
通过多列搜索,您可以在多个列和多个请求值中进行搜索。
要制作多列搜索或过滤器,你应该使用searchMultiple()
方法。
你应该传递一个数组参数:需要搜索或过滤的列的数组键,以及来自请求的请求键作为值,如下所示:['name' => 'search_name', 'bio' => 'search_bio']
请求键
多列搜索示例
$messages = Message::searchMultiple(['title'=>'search_title','description'=>'search_desc'])->get();
- 在这个例子中,我正在尝试在messages表的title列中进行搜索或过滤,我将搜索的数据来自请求键search_title等,与description一起使用。
多列搜索
通过多列搜索,您可以在多个列和单个请求值中进行搜索。
要制作多列搜索或过滤器,你应该使用searchInMultiple()
方法。
你应该传递两个参数:需要搜索或过滤的列,以及来自请求的请求键作为值。
请求键
多列搜索示例
$messages = Message::searchInMultiple(['title','description','etc...'],'search')->get();
- 在这个例子中,我正在尝试在messages表的title和description列中进行搜索或过滤,我将搜索的数据来自请求键search,如下所示:
($request->search)
搜索JSON列
通过搜索JSON,您可以在JSON列和请求值中进行搜索。
要制作多列搜索或过滤器,你应该使用jsonSearch()
方法。
你应该传递两个参数:需要搜索或过滤的列,以及来自请求的请求键作为值。
请求键
搜索JSON列示例
我的JSON列有
{ "ar":"نص عربي", "en":"English text" }
$messages = Message::jsonSearch('title->ar','search')->get();
- 在这个例子中,我正在尝试在messages表的title列中进行搜索或过滤,我将搜索的数据来自请求键search,如下所示:
($request->search)