wtolk/eloquent-query-filter

A simple PHP Eloquent extension for universal filters

1.10 2019-12-30 09:31 UTC

This package is auto-updated.

Last update: 2024-04-05 14:37:03 UTC


README

A simple PHP Eloquent extension for universal filters.

Installation

$ composer require wtolk/eloquent-query-filter
{
    "require": {
        "wtolk/eloquent-query-filter": "^1.0"
    }
}

Usage

Our request must be like

/filter[column_name:operator]=something

Method supports Eloquent operators

Our case is filtering users by name, age and gender

Inclusion the trait to your model

<?php

use Illuminate\Database\Eloquent\Model;
use WTolk\Eloquent\Filter;

class User extends Model
{
    use Filter;
}

View

<input type="text" name="filter[name:like]">
<input type="text" name="filter[age:>]">
<input type="text" name="filter[gender]">

Controller

$users=User::filter($request->input('filter'))->get();

Custom filter method

You can use your own filter methods. Create method in your Model You must return the object of QueryBuilder.

public function customFilterMethod($value, $builder)
{
    $builder->/*any queryBuilderMethods*/;
    return $builder;
}
<input type="text" name="filter[:customFilterMethod]">

Eloquent Query Builder methods support

You can use default Builder methods like limit, offset, etc.

<input type="text" name="filter[limit]">
<input type="text" name="filter[offset]">