Restrict

Global Filters

purity validates allowed filters in the following order of priority:

  • Filters specified in the filters configuration in the configs/purity.php file.

// configs/purity.php
'filters' => [
  EqualFilter::class,
  InFilter::class,
],
  • Filters declared in the $filters variable in the model.

Note that $filters will overwrite config filters.

// App\Models\Post

private array $filters = [
  '$eq',
  '$in',
];

// or

private array $filters = [
  EqualFilter::class,
  InFilter::class,
];
  • Filters passed as an array to the filterBy() function.

Note that, `filterBy` will overwrite all other defined filters.

Restrict by Field

There are three available Methods for your convenience. They take priority respectively.

  • Method 1: Define restricted filters inside $filterFields property, as shown below

The drawback here is that you have to define all the allowed fields, regardless of any restriction fields.

  • Method 2: Define them inside $restrictedFilters property

  • Method 3: Finally, you can set it on the Eloquent builder, which takes the highest priority (overwrite all the above options)

Last updated