PHP code example of fguzman / query-filter-laravel

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

    

fguzman / query-filter-laravel example snippets


composer --version

composer 

php artisan make:query UserQuery

php artisan make:filter FilterUser



namespace App\Models\Queries;

use Fguzman\QueryBuilder;

class UserQuery extends QueryBuilder
{
    //
}



namespace App\Filters;

use Fguzman\QueryFilter;

class UserFilter extends QueryFilter
{
    /**
     * Get the validation rules that apply to the request filter
     * @return array
     */
    public function rules(): array
    {
        return [
            //
        ];
    }
}



namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Filters\UserFilter;
use App\Models\Queries\UserQuery;

class User extends Model
{
    public function newQueryFilter()
    {
        return new UserFilter();
    }

    public function newEloquentBuilder($query)
    {
        return new UserQuery($query);
    }
}



namespace App\Models\Queries;

use Fguzman\QueryBuilder;

class UserQuery extends QueryBuilder
{
    public function findByName($name)
    {
        return $this->where(compact('name'))->first();
    }
}



namespace App\Filters;

use Fguzman\QueryFilter;
use App\Models\Queries\UserQuery;

class UserFilter extends QueryFilter
{
    public function rules(): array
    {
        return [
            'search' => 'filled',
        ];
    }

    public function search(UserQuery $query, $search)
    {
        return $query->where(function ($query) use ($search) {
            $query->where('name', 'like', "%{$search}%")
                ->orWhere('email', 'like', "%{$search}%");
        });
    }
}




namespace App\Http\Controllers;

class UserController extends Controller
{
    public function index()
    {
        $users = User::query()->applyFilters()->paginate();

        return view('users.index', compact('users'));
    }
}