PHP code example of laravelway / query-filters

1. Go to this page and download the library: Download laravelway/query-filters 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/ */

    

laravelway / query-filters example snippets



use LaravelWay\QueryFilters\Traits\QueryFilters;

class User extends Model
{
     use QueryFilters;
}

use LaravelWay\QueryFilters\Filters\EqualFilter;
use LaravelWay\QueryFilters\Filters\ContainsFilter;

User::query()
    ->addQueryFilters(filters: [
        'name' => EqualFilter::class,
        'email' => ContainsFilter::class
    ]);

use LaravelWay\QueryFilters\Filters\EqualFilter;
use LaravelWay\QueryFilters\Filters\ContainsFilter;

User::query()
    ->addQueryFilters(filters: [
        'name' => EqualFilter::class,
    ])
    ->addQueryFilters(filters: [
        'email' => ContainsFilter::class,
    ]);

User::query()
    ->addQueryFilters(filters: [
        'name' => function (Builder $builder, string $key, mixed $value, mixed $params = null) {
            $builder->where($key, $value);
        },
    ]);


use LaravelWay\QueryFilters\Filters\EqualFilter;
use LaravelWay\QueryFilters\Filters\ContainsFilter;

class UserFilters extends FiltersAbstract 
{
    
    /** @var array<string, class-string|callable|array{0: class-string, 1: mixed}> */
    public array $filters = [
        'name' => EqualFilter::class,
        'email' => ContainsFilter::class,
    ];
    
    /**
     * @param  Builder<Model>  $builder
     */
    public function filterSearch(Builder $builder, string $key, mixed $value, mixed $params = null): void {
        $builder->whereLike('name', "%$value%")->whereLike('email', "%$value%");
    }
}

// and then you can use this class for filtering
User::query()->addQueryFilters(filters: UserFilters::class);

public array $filters = [
    'name' => EqualFilter::class,
];

// ?name=John - it will search all rows which are equals to John.
// it can be case-insensitive if table column's collation ends with _ci suffix. 

public array $filters = [
    'name' => ContainsFilter::class,
];

// ?name=John - it will search all rows which are contains John string.
// it can be case-insensitive if table column's collation ends with _ci suffix. 

public array $filters = [
    'search' => [ContainsInFilter::class, ['name', 'email', 'role']],
];

// ?search=John - it will search all rows which are contains John string in name, email or role columns.
// it can be case-insensitive if table column's collation ends with _ci suffix. 

public array $filters = [
    'name' => LikeFilter::class,
];

// ?name=John* - it will search all rows which are starting with John
// ?name=*John - it will search all rows which are ending with John
// it can be case-insensitive if table column's collation ends with _ci suffix. 

public array $filters = [
    'trashed' => TrashedFilter::class,
];

// ?trashed=with - it will search all rows even soft deleted rows
// ?trashed=only - it will search only soft deleted rows

public array $filters = [
    'trashed' => TrashedFilter::class,
];

// ?created_at=2024-03-01 - it will filter all rows which are created exactly at selected date  
// ?created_at=2024-03-01, - it will filter all rows where created_at field more or equal to selected date
// ?created_at=,2024-03-01 - it will filter all rows where created_at field less or equal to selected date
// ?created_at=2024-03-01,2024-03-16 - it will filter all rows where created_at field is between two selected dates including both dates