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'));
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.