shankar / laravel-search
Global search across Laravel models and relationships.
v1.0.0
2025-07-01 05:47 UTC
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
README
A Laravel package for global search across Eloquent models and their relationships.
Features
- Search across multiple Eloquent models
- Supports searching related models
- Easy integration with Laravel projects
- Configurable model paths and exclusions
Installation
composer require shankar/laravel-search
Configuration
Publish the config file (optional):
php artisan vendor:publish --provider="Shankar\LaravelSearch\SearchServiceProvider"
This will create a config/globalsearch.php
file where you can customize:
model_path
: Path to your models directory (default:app/Models
)model_namespace
: Namespace for your models (default:App\Models\
)all_model_search
: Whether to search all models in the directorysearchable_models
: Specific models to include (if not searching all)exclude
: Models to exclude from search
Usage
1. Add the Searchable
Trait to Your Model
use Shankar\LaravelSearch\Traits\Searchable; class Post extends Model { use Searchable; public $searchable = true; public $searchable_fields = ['title', 'content']; public function user() { return $this->belongsTo(User::class); } }
2. Searching in Your Controller
You can perform a global search using the facade or the class directly:
use Shankar\LaravelSearch\Facades\GlobalSearch; $results = GlobalSearch::search('search term');
Or, if you want to use the trait's local scope for a specific model:
$posts = Post::search('search term')->get();
3. Searching Related Models
You can also search related models using the searchRelations
scope:
$posts = Post::searchRelations([ 'user' => ['name', 'email'], ], 'search term')->get();