theamasoud/laravel-search

一个Laravel包,用于在列、多个列和JSON列中轻松搜索

v1.0.0 2022-08-31 00:07 UTC

This package is auto-updated.

Last update: 2024-09-29 06:20:33 UTC


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)