PHP code example of holoyan / eloquent-filter

1. Go to this page and download the library: Download holoyan/eloquent-filter library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

holoyan / eloquent-filter example snippets



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


[
    'email'       => 'jo',
    'categories'  => [3, 4],
    'role' => 'admin'
]


    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Models\User;
    
    class UserController extends Controller
    {
        public function index(Request $request)
        {    
            return User::filter($request->all())->get();
        }
    }



namespace App\Models;

// import Filterable trait
use holoyan\EloquentFilter\Filterable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Filterable;
    
    // other stuff here
}


namespace App\Http\Filters;

use holoyan\EloquentFilter\Filter;
use holoyan\EloquentFilter\Rules\SimpleRule;

class UserFilter extends Filter
{

    public function rules()
    {
        return [
            'email' => SimpleRule::make()->startsWith(),
            'categories' => SimpleRule::make(),
            'role' => SimpleRule::make(),
        ];
    }
}


namespace App\Models;

use holoyan\EloquentFilter\Filterable;
use Illuminate\Foundation\Auth\User as Authenticatable;

// your custom filter class
use App\Filters\MyFilter;

class User extends Authenticatable
{
    use Filterable;

    public static $filterClass = MyCustomFilter::class;
    // other stuff here
}



$filter = $user->isAdmin() ? AdminFilter::class : BasicFilter::class;

User::filter($request->all(), $filter)->get();



    public function rules()
    {
        return [
            'firstName' => SimpleRule::make()->setColumn('first_name'),
        ];
    }



    public function rules()
    {
        return [
            'firstName' => SimpleRule::make()->setvalue(function($value){
                return $value . 'test';
}           ),
        ];
    }



    public function rules()
    {
        return [
            'name' => SimpleRule::make()
        ];
    }



        return [
            // where name="value"
            'name' => SimpleRule::make(),
            // where name like "value%"
            'name' => SimpleRule::make()->startsWith(),
            // where name like "%value"
            'name' => SimpleRule::make()->endsWith(),
            // where name like "%value%"
            'name' => SimpleRule::make()->contains()
        ];



        return [
            'name' => RawRule::make()->setCallback(function($query, $column, $value){
                $query->where('name', '<>', $value);
            })
        ];


    // filter request
    $request = [
        'order' => 'desc'
    ];


    // filter class
    return [
        'name' => SimpleRule::make(),
        // other rules ......
        'order' => OrderRule::make()->setColumn('id'),
    ];


        return [
            'name' => SimpleRule::make(),
            'products' => RelationRule::make()->setRelation('products')->setRules([
                'name' => SimpleRule::make()->startsWith(),
            ]),
        ];


        return [
            'b_date' => NestedRule::make()->setRules([
                'from' => SimpleRule::make()->setOperator('>='),
                'to' => SimpleRule::make()->setOperator('<='),
            ])
        ];



namespace App\MyNamespace;

use holoyan\EloquentFilter\Rules\FilterRule;

class DateRule extends FilterRule
{

    /**
     * @param string $filterKey
     * @param $filterValue
     */
    public function handle(string $filterKey, $filterValue): void
    {
        // do something cool
        $this->builder->whereDate($filterKey, $filterValue);
    }
}


        return [
            'name' => SimpleRule::make(),
            'created_at' => DateRule::make(),
        ];