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

# Filters

Available filter types for query building.

## Filter Types

- [Text Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/text) - Text search with operators
- [Select Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/select) - Dropdown selection
- [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

## Base Filter Methods

All filters share these methods:

```php
<?php

use Laravilt\QueryBuilder\Filters\Filter;

Filter::make('name')
    ->label('Display Label')
    ->column('db_column')
    ->default('value')
    ->visible(true)
    ->placeholder('Enter value...')
    ->query(fn ($query, $value) => $query->where('name', $value));
```

| Method | Description |
|--------|-------------|
| `make(string)` | Create filter |
| `label(string)` | Display label |
| `column(string)` | Database column |
| `default(mixed)` | Default value |
| `visible(bool)` | Visibility |
| `placeholder(string)` | Placeholder text |
| `query(Closure)` | Custom query logic |
| `getName()` | Get filter name |
| `getLabel()` | Get label |
| `getColumn()` | Get column |

## Custom Query

```php
<?php

use Laravilt\QueryBuilder\Filters\TextFilter;

TextFilter::make('search')
    ->query(function ($query, $value) {
        $query->where('name', 'like', "%{$value}%")
            ->orWhere('email', 'like', "%{$value}%");
    });
```

## Conditional Visibility

```php
<?php

TextFilter::make('admin_notes')
    ->visible(auth()->user()->isAdmin());
```

## Related

- [Text Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/text) - Text operators
- [Select Filter](https://github.com/laravilt/laravilt/blob/HEAD/docs/query-builder/filters/select) - Dropdowns
