PHPackages                             aripdev/queryable - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. aripdev/queryable

ActiveLibrary[Search &amp; Filtering](/categories/search)

aripdev/queryable
=================

Laravel package for paginate, filter, sort and search query

v1.1.0(3y ago)011MITPHP

Since Jan 14Pushed 3y ago1 watchersCompare

[ Source](https://github.com/aripdev/queryable)[ Packagist](https://packagist.org/packages/aripdev/queryable)[ RSS](/packages/aripdev-queryable/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (3)Used By (0)

Laravel Queryable
=================

[](#laravel-queryable)

This package handle common request for paginate,sort,filter and search data.

Table of Contents
-----------------

[](#table-of-contents)

- [Getting started](#getting-started)
- [Inclusion](#inclusion)
- [Usage](#usage)
- [Methods](#methods)
    - [paginated](#paginated)
    - [sorted](#sorted)
    - [filtered](#filtered)
    - [searched](#searched)
- [Extras](#extras)

Getting Started
---------------

[](#getting-started)

Install package

`composer require aripdev/queryable`

Inclusion
---------

[](#inclusion)

Add package to model that use queryable

```
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Laravel\Sanctum\HasApiTokens;
use Aripdev\Queryable\HasQueryable;

class User extends Authenticatable
{
    use HasQueryable, HasApiTokens, HasFactory;
}
```

Usage
-----

[](#usage)

This is how you can call some methods in your controller.

```
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class LabController extends Controller
{
    public function index(User $user)
    {
        return $user->paginated()
            ->sorted()
            ->result(['name'])
            ->get();
    }
}
```

Methods
-------

[](#methods)

Available method

### paginated

[](#paginated)

- Controller

    ```
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Models\User;

    class LabController extends Controller
    {
        public function index(User $user)
        {
            return $user->paginated()
                ->result()
                ->get();
        }
    }
    ```
- Url parameter `_limit` and `_page` to limit your data.

    ex : `yourdomain/user?_page=1&_limit=5`

note: default limit of paginated is 10 if user not bring paramater for `_limit` in request

### sorted

[](#sorted)

- Controller

    ```
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Models\User;

    class LabController extends Controller
    {
        public function index(User $user)
        {
            return $user
                ->paginated()
                ->sorted(['name'])
                ->result()
                ->get();
        }
    }
    ```

    make sure the column exist in model by passing paramereter method,this example that we have column name in our model.
- Url parameter `_sort` and optionaly `_order`, default sorting is ascending

    ex : `yourdomain/user?_sort=name&_order=desc&_limit=2`

### filtered

[](#filtered)

- controller

    ```
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Models\User;

    class LabController extends Controller
    {
        public function index(User $user)
        {
            return $user
                ->paginated()
                ->sorted(['name'])
                ->filtered(['role'])
                ->result()
                ->get();
        }
    }
    ```
- Url parameter that configure column in method filtered, in this example we filtered data with column `role`

    ex: `yourdomain/user?role=developer&_limit=2`

### searched

[](#searched)

- Controller

    ```
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Models\User;

    class LabController extends Controller
    {
        public function index(User $user)
        {
            return $user
                ->paginated()
                ->sorted(['name'])
                ->filtered(['role'])
                ->searched(['title'])
                ->result()
                ->get();
        }
    }
    ```
- Url parameter like filtered method put parameter column that we want to search and we use column `title` and put the value `q` in url

    ex: `yourdomain/user?q=enginering`

Extras
------

[](#extras)

if you want to show the count data of every query,you can use `xheader`

```
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class LabController extends Controller
{
    public function index(User $user)
    {
        $data = $user
            ->paginated()
            ->sorted(['name'])
            ->filtered(['role'])
            ->searched(['title'])
            ->result()
            ->get();

        $xTotalCount = app('xheader')->headers;

        return response($data, 200, $xTotalCount);
    }
}
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~30 days

Total

2

Last Release

1188d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c78e1bcfea41bf6d80fa5d529f446a164445fbdb6f69e171fbbf496fd29228e5?d=identicon)[aripdev](/maintainers/aripdev)

---

Top Contributors

[![aripdev](https://avatars.githubusercontent.com/u/53026866?v=4)](https://github.com/aripdev "aripdev (3 commits)")

### Embed Badge

![Health badge](/badges/aripdev-queryable/health.svg)

```
[![Health](https://phpackages.com/badges/aripdev-queryable/health.svg)](https://phpackages.com/packages/aripdev-queryable)
```

###  Alternatives

[mehradsadeghi/laravel-filter-querystring

Filter your queries based on url query string parameters like a breeze.

169118.2k](/packages/mehradsadeghi-laravel-filter-querystring)[pos-lifestyle/laravel-nova-date-range-filter

A Laravel Nova date range filter.

16179.1k](/packages/pos-lifestyle-laravel-nova-date-range-filter)[omure/scout-advanced-meilisearch

Laravel Scout extension that allows to use meilisearch advanced features as well as has an extended collection driver for testing purposes.

123.9k](/packages/omure-scout-advanced-meilisearch)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
