> Source: https://laravilt.com/docs/query-builder/introduction

# Query Builder

Fluent filtering, sorting, and pagination for queries.

## Installation

```bash
composer require laravilt/query-builder
```

## Documentation

- [Filters](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/introduction) - All filter types
- [Text Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/text) - Text search
- [Select Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/select) - Dropdown options
- [Boolean Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/boolean) - Yes/No toggle
- [Date Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/date) - Date ranges
- [Sorting](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/sorting) - Column sorting

## Quick Example

```php
<?php

use Laravilt\QueryBuilder\QueryBuilder;
use Laravilt\QueryBuilder\Filters\TextFilter;
use Laravilt\QueryBuilder\Filters\SelectFilter;
use Laravilt\QueryBuilder\Sort;

$builder = (new QueryBuilder())
    ->filters([
        TextFilter::make('name')->contains(),
        SelectFilter::make('status')
            ->options(['active' => 'Active', 'inactive' => 'Inactive']),
    ])
    ->sorts([
        Sort::make('name'),
        Sort::make('created_at')->defaultDirection('desc'),
    ])
    ->applyFilters($request->all())
    ->sortBy('created_at', 'desc')
    ->perPage(15);

$query = Product::query();
$builder->apply($query);
$products = $query->paginate(15);
```

## Methods

| Method | Description |
|--------|-------------|
| `filters(array)` | Set filter array |
| `addFilter(Filter)` | Add single filter |
| `sorts(array)` | Set sort array |
| `addSort(Sort)` | Add single sort |
| `applyFilters(array)` | Apply filter values |
| `search(?string)` | Global search |
| `sortBy(col, dir)` | Apply sorting |
| `perPage(int)` | Items per page |
| `paginated(bool)` | Enable pagination |
| `apply(Builder)` | Apply to query |

## Related

- [Tables](https://github.com/laravilt/laravilt/blob/HEAD/docs/tables/introduction) - Table integration
- [Filters](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/introduction) - Filter types
