承接 maize-tech/laravel-searchable 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

maize-tech/laravel-searchable

最新稳定版本:4.1.0

Composer 安装命令:

composer require maize-tech/laravel-searchable

包简介

Laravel Searchable

README 文档

README

Social Card of Laravel Searchable

Laravel Searchable ????

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Easily add weighted searches through model attributes and relationships.

This package currently supports MySQL and PostgreSQL.

Installation

You can install the package via composer:

composer require maize-tech/laravel-searchable

You can publish the config file with:

php artisan vendor:publish --provider="Maize\Searchable\SearchableServiceProvider" --tag="searchable-config"

This is the content of the published config file:

return [ /*  |--------------------------------------------------------------------------  | Default match weight  |--------------------------------------------------------------------------  |  | The weight of all searched words which match at least one of the  | list of searchable attributes.  | Defaults to 1.  |  */ 'default_match_weight' => 1, ];

Usage

To use the package, add the Maize\Searchable\HasSearch trait to each model you want to make searchable.

Once done, you can implement the getSearchableAttributes abstract method by returning the list of attributes (or relationships' attributes) you want to search for.

You can also define the weight of each searchable attribute. If no weight is specified then default_match_weight will be taken from config/searchable.php.

Here's an example model including the HasSearch trait:

<?php namespace App\Models; use Maize\Searchable\HasSearch; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Support\Facades\DB; class Article extends Model { use HasSearch; protected $fillable = [ 'id', 'title', 'body', 'creator_name', 'creator_surname', ]; protected $casts = [ 'body' => 'array', ]; /**  * Get the model's searchable attributes.  *  * @return array  */ public function getSearchableAttributes(): array { return [ 'title' => 5, // Model attribute 'body.en' => 2, // Single json key of a model attribute 'tags.name', // Relationship attribute 'tags.description.*', // All json keys of a relationship attribute DB::raw("CONCAT(creator_name, ' ', creator_surname)"), // Raw expressions are supported too ]; } /**  * Allows fetching the tags bound to current article instance  *  * @return BelongsToMany  */ public function tags(): BelongsToMany { return $this->belongsToMany(Tag::class)->withTimestamps(); } }

Now you can just search for a given term using the scopeSearch scope method:

use App\Models\Article; $searchTerm = 'the search string'; Article::query() ->search($searchTerm) ->where('column', '=', 'something') ->get();

That's all!

The package generates an SQL query with an 'or' condition for each search term and each searchable fields. The given query returns all models matching the search terms. Furthermore, search results are weighted, which means the query will be ordered by the most matching models.

If you don't want to order the search results by its match weight, you can set the orderByWeight flag to false:

use App\Models\Article; $searchTerm = 'the search string'; Article::query() ->search($searchTerm, false) ->where('column', '=', 'something') ->get();

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 45.85k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 111
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 111
  • Watchers: 6
  • Forks: 9
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固