PHP code example of tijanidevit / query-filter

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

    

tijanidevit / query-filter example snippets


$query = User::query();

if (request()->filled('name')) {
    $query->where('name', request('name'));
}

if (request()->filled('status')) {
    $query->where('status', request('status'));
}

return $query->get();

User::query()
    ->filterBy([
        'name' => request('name'),
        'status' => request('status'),
    ])
    ->get();

'providers' => [
    Tijanidevit\QueryFilter\Providers\FilterProvider::class,
]

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Tijanidevit\QueryFilter\Traits\Filterable;

class User extends Model
{
    use Filterable;
}

// Single column matching
User::query()->filterBy('status', 'active')->get();

// Multiple columns exact matching
User::query()->filterBy([
    'name' => 'Jane',
    'status' => ['active', 'pending'], // Safely wraps to WhereIn natively!
])->get();

// Secure Null checks automatically
User::query()->filterBy([
    'email_verified_at' => ['null' => true],
])->get();

Post::query()->filterByRelation([
    'author' => [
        'status' => 'active',
        'is_banned' => false
    ]
])->get();

// Standard Array
User::query()->filterWhereIn('status', ['active', 'pending'])->get();

// Comma-delimited strings (Ideal for external API requests)
User::query()->filterWhereIn('status', 'active,pending')->get();

// Variadic arguments
User::query()->filterWhereIn('status', 'active', 'pending')->get();

// AND logic across multiple fields
User::query()->search(['name' => 'John', 'city' => 'Lagos'])->get();

// searchIn(): Grouped OR searching across multiple fields using a single keyword constraint
User::query()->searchIn(['first_name', 'last_name', 'email'], 'john')->get();

// orSearch(): Chained top-level grouped OR blocks gracefully appended to pre-existing searches
Article::query()
    ->search('category', 'technology')
    ->orSearch(['title', 'summary'], 'laravel')
    ->get();

User::query()->filterFromRequest(request(), [
    'email' => 'login_email',   // Translates to: where email = request('login_email')
    'department_id' => 'dept',
])->get();

// Filter single explicit matching date period ranges
User::query()->filterByDate('2024-01-01')->get();

// Search date boundaries safely ignoring omitted limits
Order::query()->filterByDateRange(request('date_from'), request('date_to'))->get();

// Isolate month timelines seamlessly
Post::query()->filterByMonth([1, 2])->get();

User::query()
    ->sortResultBy(request('sort_column'), request('sort_direction'))
    ->latestBy('last_login')
    ->get();

$users = User::query()
    ->filterBy([
        'status' => request('status'),
        'email_verified_at' => ['null' => request('missing_email_verification')],
    ])
    ->filterWhereIn([
        'department' => request('departments'), // Array or comma-delimited natively evaluated
    ])
    ->filterByRelation([
        'manager' => [
            'status' => 'active',
        ],
    ])
    ->filterByDateRange(request('from'), request('to'))
    ->searchIn(['name', 'email', 'biography'], request('search_query'))
    ->sortResultBy(request('sort_by', 'created_at'), request('sort_dir', 'desc'))
    ->latestBy('last_login')
    ->get();