sharifuddin / laravel-smart-search
A smart search helper for Laravel. Provides advanced Eloquent search with relation discovery and multiple search modes.
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/sharifuddin/laravel-smart-search
Requires
- php: ^8.1
- laravel/framework: ^10.0|^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
- spatie/laravel-ray: ^1.0
README
Laravel Smart Search is a high-performance, intelligent search package for Laravel Eloquent models. It provides automatic relation discovery, configurable search depth, multiple search modes, and optimized queries for large datasets.
โจ Key Features
- ๐ Smart Relation Discovery โ Automatically searches through model relationships.
- โก High Performance โ Optimized queries with configurable limits.
- ๐ฏ Multiple Search Modes โ
like,exact,starts_with,ends_with. - ๐ง Fully Configurable โ Customize search behavior and priorities.
- ๐ Priority Columns โ Define columns to prioritize for better results.
- ๐ก๏ธ Type Safe โ Full type hints, PHPStan ready.
- ๐งช Fully Tested โ Comprehensive test coverage included.
- ๐ Laravel Native โ Seamless integration with Eloquent models.
๐ฆ Installation
Requirements
- PHP 8.1+
- Laravel 10.x or 11.x
Via Composer
composer require sharif/laravel-smart-search
``
Publish Configuration (Optional)
php artisan vendor:publish --provider="Sharifuddin\\LaravelSmartSearch\\SmartSearchServiceProvider" --tag="smart-search-config"
๐ฏ Quick Start
1๏ธโฃ Use the Trait
Add the SmartSearch trait to your Eloquent models:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Sharifuddin\LaravelSmartSearch\Traits\SmartSearch; class Product extends Model { use SmartSearch; }
2๏ธโฃ Basic Search Usage
// Simple search $products = Product::applySmartSearch('laptop')->get(); // Paginated search $products = Product::applySmartSearch($request->input('search'))->paginate(15); // Search with relations $products = Product::applySmartSearch('apple')->with('brand', 'categories')->get();
๐ง Configuration
After publishing, edit config/smart-search.php to customize behavior:
return [ 'defaults' => [ 'mode' => 'like', 'deep' => true, 'max_relation_depth' => 2, 'search_operator' => 'or', ], 'columns' => [ 'excluded' => [ 'id', 'created_at', 'updated_at', 'deleted_at', 'password', 'remember_token', 'email_verified_at' ], 'prioritized' => ['name', 'title', 'code', 'email'], 'max_per_table' => 10, ], 'relations' => [ 'auto_discover' => true, 'max_depth' => 2, 'excluded' => ['password', 'secret', 'tokens'], ], 'performance' => [ 'max_join_tables' => 5, 'chunk_search' => false, 'chunk_size' => 1000, ], ];
๐ก Usage Examples
Basic Search
$users = User::applySmartSearch('john')->get(); $products = Product::applySmartSearch('wireless keyboard')->paginate(20);
Advanced Search with Options
$results = Product::applySmartSearch( search: 'laptop', columns: ['name', 'sku', 'description'], options: [ 'mode' => 'like', 'deep' => true, 'max_relation_depth' => 1 ] )->get();
Relation Search
$posts = Post::applySmartSearch('laravel tips')->with('author', 'tags', 'comments')->get();
Multiple Search Modes
// Like (default) $results = Product::applySmartSearch('phone'); // Exact match $results = User::applySmartSearch('admin@example.com', [], ['mode' => 'exact']); // Starts with $results = Product::applySmartSearch('APP', [], ['mode' => 'starts_with']); // Ends with $results = Product::applySmartSearch('001', [], ['mode' => 'ends_with']);
โก Performance Optimization
- Add indexes for frequently searched columns.
- Limit
max_relation_depthfor large datasets. - Disable
deepoption for simple queries. - Enable
chunk_searchin config for large tables.
๐งช Testing
# Run all tests composer test # Run tests with coverage composer test-coverage
๐ค Contributing
- Fork the repository.
- Clone your fork:
git clone https://github.com/your-username/laravel-smart-search. - Install dependencies:
composer install. - Run tests:
composer test.
See CONTRIBUTING.md for more details.
๐ License
MIT License. See LICENSE.md.
Laravel Smart Search - Intelligent search for intelligent applications.
GitHub โข Packagist โข Issues โข Discussions
```