PHPackages                             daiyanmozumder/laravel-flexsearch - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. daiyanmozumder/laravel-flexsearch

ActiveLibrary[Search &amp; Filtering](/categories/search)

daiyanmozumder/laravel-flexsearch
=================================

A flexible Laravel search and filter helper for Eloquent models.

v4.0.0(1mo ago)013MITPHPPHP &gt;=8.0

Since Oct 27Pushed 3mo agoCompare

[ Source](https://github.com/DaiyanMozumder/LaravelFlexSearch)[ Packagist](https://packagist.org/packages/daiyanmozumder/laravel-flexsearch)[ RSS](/packages/daiyanmozumder-laravel-flexsearch/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

🔍 Laravel FlexSearch
====================

[](#-laravel-flexsearch)

### *Powerful Dynamic Filtering, Relationship &amp; Keyword Search for Laravel Eloquent*

[](#powerful-dynamic-filtering-relationship--keyword-search-for-laravel-eloquent)

[![Packagist Version](https://camo.githubusercontent.com/c88890b94bb2e157a4c10739ad4e5c9eb7aea5d29e6817405dec77c102488df3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f64616979616e6d6f7a756d6465722f6c61726176656c2d666c65787365617263682e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/daiyanmozumder/laravel-flexsearch)[![License](https://camo.githubusercontent.com/09e63059eb8398281be3be1c09c2ec27402016e7ab43fb932229ce9bdb1c0e7e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f64616979616e6d6f7a756d6465722f6c61726176656c2d666c65787365617263682e7376673f7374796c653d666f722d7468652d6261646765)](LICENSE.md)[![PHP Version](https://camo.githubusercontent.com/a98e2c252d4c454155dc417e251945adc32e9074a5d261386292b5248a86e448/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f64616979616e6d6f7a756d6465722f6c61726176656c2d666c65787365617263682e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/daiyanmozumder/laravel-flexsearch)[![Downloads](https://camo.githubusercontent.com/b5ee4fa15103687c493462a1c3c7b1dc98459a5fd3db3f6031036d197ec46f70/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f64616979616e6d6f7a756d6465722f6c61726176656c2d666c65787365617263682e7376673f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/daiyanmozumder/laravel-flexsearch)

**Created with ❤️ by [Daiyan Mozumder](https://github.com/MiltonDaiyan)**

[Features](#features) • [Installation](#installation) • [Quick Start](#quick-start) • [Documentation](#documentation) • [Examples](#usage-examples) • [Contributing](#contributing)

---

📑 Table of Contents
-------------------

[](#-table-of-contents)

- [✨ Features](#-features)
- [📦 Installation](#-installation)
- [⚡ Quick Start](#-quick-start)
- [🧾 Documentation](#-documentation)
- [🧠 How Keyword Search Works](#-how-keyword-search-works)
- [🔗 Relationship Filtering &amp; Search](#-relationship-filtering--search)
- [💡 Usage Examples](#-usage-examples)
- [🎁 Benefits](#-benefits)
- [🤝 Contributing](#-contributing)
- [📝 License](#-license)
- [🔮 Roadmap](#-roadmap)

---

✨ Features
----------

[](#-features)

🎯 **Dynamic Filters**🔍 **Keyword Search**🔗 **Relationship Aware**Apply simple or operator-based filters (`=`, `>`, `=`, `!=`) for flexible database queriesPerform powerful full-text-like search across multiple model columns — even in relationships!Supports filtering and searching through related models using dot notation (e.g. `company.name`)

### 🚀 **Zero Configuration Required**

[](#-zero-configuration-required)

🎉 No service provider or config needed — works instantly out of the box!

---

📦 Installation
--------------

[](#-installation)

Install via Composer:

```
composer require daiyanmozumder/laravel-flexsearch
```

> 💡 **No additional setup needed!** The package is ready to use immediately after installation.

---

⚡ Quick Start
-------------

[](#-quick-start)

```
use DaiyanMozumder\LaravelFlexSearch\FlexSearch;
use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index(Request $request, FlexSearch $flexSearch)
    {
        $query = User::query()->with('company');

        $filters = $request->only(['status', 'company.name']);
        $searchTerm = $request->input('q');
        $searchable = ['name', 'email', 'company.name'];

        $users = $flexSearch->apply($query, $filters, $searchTerm, $searchable)
                            ->paginate(15);

        return view('users.index', compact('users'));
    }
}
```

✅ **That's it!** You now have dynamic filters, keyword search, and relational querying in one powerful line.

---

🧾 Documentation
---------------

[](#-documentation)

### Method Signature

[](#method-signature)

```
public function apply(
    Builder $query,
    array $filters = [],
    ?string $searchTerm = null,
    array $searchableColumns = []
): Builder
```

### Parameters

[](#parameters)

ParameterTypeRequiredDescription`$query``Builder`✅Eloquent query builder instance`$filters``array`❌Dynamic key-value filters with optional operators`$searchTerm``?string`❌Keyword(s) for text-based search`$searchableColumns``array`❌Columns (including relation columns) to search### 🧩 Operator-Based Filtering

[](#-operator-based-filtering)

FlexSearch supports powerful operator-based filtering:

```
$filters = [
    'price>=' => 100,
    'created_at!=' => '2024-01-01',
    'status' => 'active',
];
```

**Generated SQL:**

```
WHERE price >= 100
  AND created_at != '2024-01-01'
  AND status = 'active'
```

---

🔗 Relationship Filtering &amp; Search
-------------------------------------

[](#-relationship-filtering--search)

You can filter or search within related models using **dot notation** for seamless relationship querying.

### 📌 Example 1: Filtering on Relationships

[](#-example-1-filtering-on-relationships)

```
$filters = [
    'company.name=' => 'Ashlar Tech',
    'status' => 'active'
];

$query = User::with('company');
$flexSearch->apply($query, $filters)->get();
```

**Generated SQL (simplified):**

```
WHERE EXISTS (
    SELECT * FROM companies
    WHERE users.company_id = companies.id
      AND companies.name = 'Ashlar Tech'
)
AND users.status = 'active'
```

### 🔎 Example 2: Searching on Related Columns

[](#-example-2-searching-on-related-columns)

```
$searchTerm = 'daiyan ashlar';
$searchableColumns = ['name', 'email', 'company.name'];

$query = User::with('company');
$flexSearch->apply($query, [], $searchTerm, $searchableColumns)->get();
```

**Result:** Finds users where `name`, `email`, or `company.name` matches any search term.

---

🧠 How Keyword Search Works
--------------------------

[](#-how-keyword-search-works)

FlexSearch splits your input into words, then applies smart logic:

**AND** between words → *every term must match*
**OR** between columns → *each term can match any field*

### Example:

[](#example)

```
$searchTerm = "red sport";
$columns = ['title', 'description'];
```

**Generated Query:**

```
WHERE (
    (title LIKE '%red%' OR description LIKE '%red%')
    AND
    (title LIKE '%sport%' OR description LIKE '%sport%')
)
```

---

💡 Usage Examples
----------------

[](#-usage-examples)

### 🛍 Example 1: Product Search

[](#-example-1-product-search)

```
$products = (new FlexSearch())->apply(
    Product::query(),
    ['category_id' => 3, 'price>=' => 100],
    'cotton tshirt',
    ['name', 'description', 'brand.name']
)->get();
```

### 👥 Example 2: User Search with Relationships

[](#-example-2-user-search-with-relationships)

```
$query = User::query()->with('company');

$users = (new FlexSearch())->apply(
    $query,
    ['company.name=' => 'Ashlar Tech', 'status' => 'active'],
    'daiyan',
    ['name', 'email', 'company.name']
)->paginate(10);
```

### 📰 Example 3: Blog Post Search

[](#-example-3-blog-post-search)

```
$posts = (new FlexSearch())->apply(
    Post::with('author', 'tags'),
    ['category_id' => $request->category],
    $request->search,
    ['title', 'body', 'author.name', 'tags.name']
)->paginate(15);
```

---

🎁 Benefits
----------

[](#-benefits)

FeatureDescription🚀 **Zero Setup**Works instantly, no config files required🔧 **Highly Flexible**Handles filters, relations, and keywords with ease⚡ **Optimized Queries**Uses `whereHas` intelligently for better performance💡 **Readable Syntax**Expressive, minimal, and clean API🧱 **ORM Friendly**Seamlessly integrates with Eloquent relationships🔗 **Chainable**Works perfectly with query chains and other builders

---

🤝 Contributing
--------------

[](#-contributing)

We welcome contributions! 🎉

Pull requests are welcome on [GitHub](https://github.com/MiltonDaiyan/laravel-flexsearch).

### Guidelines:

[](#guidelines)

- ✅ Follow **PSR-12** coding standards
- ✅ Add tests where applicable
- ✅ Keep commits meaningful and scoped
- ✅ Document all new features

### 🌟 Join our community of contributors!

[](#-join-our-community-of-contributors)

---

📝 License
---------

[](#-license)

The MIT License (MIT). See [LICENSE.md](LICENSE.md) for details.

---

🙏 Credits
---------

[](#-credits)

**Created &amp; Maintained by**
**[Daiyan Mozumder](https://github.com/MiltonDaiyan)**

Special thanks to all [contributors](https://github.com/MiltonDaiyan/laravel-flexsearch/graphs/contributors) who help make this project better! 🎉

---

🔮 Roadmap
---------

[](#-roadmap)

StatusFeature✅Relationship-based search✅Operator-based filtering (`>`, `=`, `!=`)🚧`BETWEEN` and `IN` support🚧Fuzzy search and match ranking📅Result highlighting📅Query caching

---

💖 Show Your Support
-------------------

[](#-show-your-support)

If you find this package helpful, please ⭐ **star it** on [GitHub](https://github.com/MiltonDaiyan/laravel-flexsearch)!

[![GitHub stars](https://camo.githubusercontent.com/a74c89d62c7776fe513acad51b47ba9c1e872be60194503ff71ecf939126a26e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4d696c746f6e44616979616e2f6c61726176656c2d666c65787365617263683f7374796c653d736f6369616c)](https://github.com/MiltonDaiyan/LaravelFlexSearch)[![GitHub forks](https://camo.githubusercontent.com/c2990956bcf569e7508d8284d9f7ddea6e8fef30854e09245cccbc65be0cc6c7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f4d696c746f6e44616979616e2f6c61726176656c2d666c65787365617263683f7374796c653d736f6369616c)](https://github.com/MiltonDaiyan/LaravelFlexSearch)

---

**Made with ❤️ by [Daiyan Mozumder](https://github.com/MiltonDaiyan)**

*Empowering Laravel developers with flexible search solutions*

---

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance86

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~39 days

Total

5

Last Release

42d ago

Major Versions

v1.0.0 → v2.0.02025-10-29

v2.0.0 → v3.0.02025-11-06

v3.0.1 → v4.0.02026-03-31

### Community

Maintainers

![](https://www.gravatar.com/avatar/0306cc63f1bc4923a2db180a4874181070fa930957dc8b8b032ec89fb4c4f3b9?d=identicon)[MiltonDaiyan](/maintainers/MiltonDaiyan)

---

Top Contributors

[![DaiyanMozumder](https://avatars.githubusercontent.com/u/108240573?v=4)](https://github.com/DaiyanMozumder "DaiyanMozumder (17 commits)")

### Embed Badge

![Health badge](/badges/daiyanmozumder-laravel-flexsearch/health.svg)

```
[![Health](https://phpackages.com/badges/daiyanmozumder-laravel-flexsearch/health.svg)](https://phpackages.com/packages/daiyanmozumder-laravel-flexsearch)
```

###  Alternatives

[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

397612.3k](/packages/jeroen-g-explorer)[swisnl/laravel-fulltext

Fulltext indexing and searching for Laravel

184104.5k6](/packages/swisnl-laravel-fulltext)[romanstruk/manticore-scout-engine

Laravel Manticore Scout Engine

4818.1k](/packages/romanstruk-manticore-scout-engine)[statamic-rad-pack/meilisearch

meilisearch search driver for Statamic

1661.7k](/packages/statamic-rad-pack-meilisearch)[internachi/blade-alpine-instantsearch

Algolia instant search as Blade/Alpine.js components

1940.9k](/packages/internachi-blade-alpine-instantsearch)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
