Skip to content

sedehi/filterable

Repository files navigation

Laravel Filterable

Latest Stable Version Packagist Downloads (custom server) GitHub Workflow Status

Introduction

The Sedehi/Filterable package is designed for performing searches on models based on query strings found in requests. It allows you to easily filter model data according to the query parameters provided in HTTP requests.

Installation

To get the latest version, simply require the project using Composer:

composer require sedehi/filterable

If you are using Laravel >=5.5 the service provider will be automatically discovered otherwise we need to add the filterable service provider to config/app.php under the providers key:

Sedehi\Filterable\FilterableServiceProvider::class,

Usage

The first step in using the Sedehi/Filterable package in your Laravel application is to add the Sedehi\Filterable\Filterable trait to any model on which you want to perform filtering.

Below is an example of a model with the Filterable trait:

<?php

namespace App\Models;

use Sedehi\Filterable\Filterable;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use Filterable;

    public $filterable = [
        'title',
    ];

    // Your model's other properties and methods go here...
}

Applying Filtering in Queries

Finally, to apply filtering in any query where you need to execute filterable, add the filter scope as follows:

Product::filter()->where('active', 1)->get();

Defining Filterable Fields

To specify which fields can be filtered and the type of search operation available on those fields, you need to define an array named $filterable within your model. In this array, you list the names of the fields that should be filterable and specify the filter operation for each field.

In the example above, we have defined that the 'title' field can be filtered.

You can add more fields to the $filterable array as needed for your model.

Here's a guide on how to filter data using the filterable feature:

$filterable = [
    'title',
];

$request = ['title' => 'some text']

SQL Output:

SELECT * from product where `title` = 'some text'

About

No description or website provided.

Topics

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Packages

No packages published

Languages