shankar/laravel-search

Global search across Laravel models and relationships.

v1.0.0 2025-07-01 05:47 UTC

This package is auto-updated.

Last update: 2025-07-01 05:51:31 UTC


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 directory
  • searchable_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();