shankar / laravel-search
Global search across Laravel models and relationships.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/shankar/laravel-search
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
README
A Laravel package for global search and 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();