PHPackages                             philperusse/nova-column-filter - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. philperusse/nova-column-filter

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

philperusse/nova-column-filter
==============================

A Laravel Nova column queryer filter

v0.3.0(7y ago)38445.0k↓68.2%12[10 issues](https://github.com/philperusse/nova-column-filter/issues)[2 PRs](https://github.com/philperusse/nova-column-filter/pulls)MITVuePHP &gt;=7.1.0

Since Nov 5Pushed 6y ago3 watchersCompare

[ Source](https://github.com/philperusse/nova-column-filter)[ Packagist](https://packagist.org/packages/philperusse/nova-column-filter)[ RSS](/packages/philperusse-nova-column-filter/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (5)Dependencies (1)Versions (6)Used By (0)

Column Filter for Laravel Nova
==============================

[](#column-filter-for-laravel-nova)

A Laravel Nova column querier filter for Nova &gt; v1.1.8

*Prior to Nova v.1.3.2, use the [0.2.1 version](https://github.com/philperusse/nova-column-filter/tree/v0.2.1).*

*Prior to Nova v.1.1.8, use the [0.1.1 version](https://github.com/philperusse/nova-column-filter/tree/0.1.1).*

### Demo

[](#demo)

[![Demo](https://camo.githubusercontent.com/458cb1155b37d9ed4cc4a44cbdbc1a0e4fbaa6b06ed0d08dc4d975898ddb60a3/687474703a2f2f672e7265636f726469742e636f2f6c7a6b564e57413544652e676966)](https://camo.githubusercontent.com/458cb1155b37d9ed4cc4a44cbdbc1a0e4fbaa6b06ed0d08dc4d975898ddb60a3/687474703a2f2f672e7265636f726469742e636f2f6c7a6b564e57413544652e676966)

### Installation

[](#installation)

Run this command in your Laravel Nova project:

`composer require philperusse/nova-column-filter`

### Usage

[](#usage)

Create a filter with `artisan`

```
 $ php artisan nova:filter UserColumnFilter
```

Extend your filter class with the ColumnFilter class instead of Nova's base Filter class and add the columns on which you want to filter on in the options

```
use \philperusse\Filters\ColumnFilter as Filter;

class ColumnFilter extends Filter
{

   /**
    * Apply the filter to the given query.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Illuminate\Database\Eloquent\Builder  $query
    * @param  mixed  $value
    * @return \Illuminate\Database\Eloquent\Builder
   */
  public function apply( Request $request, $query, $value )
  {
     $args = collect($value)->values()->filter(); //Remove any empty keys.
     if($args->isEmpty())
          return $query;

      return $query->where(...$args->all());
  }

  /**
   * Get the filter's available options.
   *
   * @param  \Illuminate\Http\Request  $request
   * @return array
   */
  public function options( Request $request ) : array
    {
        return array_merge(parent::options($request), [
            'columns' => [
                'name'      => 'Name',
                'age'       => 'Age',
            ]
        ]);
    }
}
```

### Customization

[](#customization)

You can customize the operator list by overriding the `operators` key in the filters options.

```
use philperusse\Filters\ColumnFilter as Filter;

class ColumnFilter extends Filter
{
    public function options( Request $request )
    {
        return array_merge(parent::options($request), [
            'columns' => [
                'name'      => 'Name',
                'age'       => 'Age',
            ],
            'operators' => [
                '='     => '&equals;',
                '>'     => '&gt;',
                '>='    => '&ge;',
                '
