abbasudo/laravel-purity
Laravel Purity adds elegant filtering and sorting to Eloquent queries. Just call filter() on a model query, then let clients apply complex conditions via URL query parameters (e.g., filters[title][$contains]=...). Great for clean, flexible APIs.
In this section, we're going to talk about how Purity can help you handle relation fields.
First, you need to define the relation in your model:
use Illuminate\Database\Eloquent\Relations\HasMany;
class Post extends Model
{
use Filterable;
public function tags(): HasMany
{
return $this->hasMany(Tag::class);
}
}
Note that Purity read available fields from related models,
you'll want to edit the $filterFields property in the related model.
read more about $filterFields in allowed fields section.
class Tags extends Model
{
use Filterable;
protected $filterFields = [
'title',
];
}
Now you're all set to apply relation filtering! You can find some examples on the filter examples page.
Purity supports sorting by the following relationship types:
Just like with filtering, you'll need to define the return type of the relations in your model:
use Illuminate\Database\Eloquent\Relations\HasMany;
class Post extends Model
{
use Sortable;
public function tags(): HasMany
{
return $this->hasMany(Tag::class);
}
}
Check out the sort examples page for some examples.
How can I help you explore Laravel packages today?