crushjs/mini-datatables

Mini Laravel DataTables

Maintainers

Package info

github.com/crushjs/mini-datatables

pkg:composer/crushjs/mini-datatables

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-05-06 08:10 UTC

This package is auto-updated.

Last update: 2026-05-06 08:39:28 UTC


README

A lightweight Laravel DataTables package inspired by Yajra DataTables.

Features

  • Simple JSON response
  • Query Builder support
  • Search support
  • Pagination
  • Sorting
  • Custom columns
  • Raw columns
  • Laravel auto-discovery

Installation

Install package via Composer:

composer require crushjs/mini-datatables

Publish Assets

php artisan vendor:publish --tag=minidatatables-assets

Laravel Auto Discovery

The package supports Laravel auto-discovery.

No manual provider registration required.

Usage

Basic Example

use App\Models\User;
use Crushjs\MiniDataTables\MiniDataTables;

Route::get('/users', function () {
    return MiniDataTables::of(
        User::query()
    )->make();
});

Response Example

{
  "data": [
    {
      "id": 1,
      "name": "John"
    },
    {
      "id": 2,
      "name": "Jane"
    }
  ]
}

Search

URL

/users?search=john

Example

return MiniDataTables::of(
    User::query()
)
->search('name', 'test')
->make();

Pagination

Example

return MiniDataTables::of(
    User::query()
)
->paginate(10)
->make();

Sorting

URL

/users?sort=id

Example

return MiniDataTables::of(
    User::query()
)
->sort()
->make();

Add Custom Column

return MiniDataTables::of(
    User::query()
)
->addColumn('action', function ($user) {
    return '<button>Edit</button>';
})
->make();

Edit Column

return MiniDataTables::of(
    User::query()
)
->editColumn('name', function ($user) {
    return strtoupper($user->name);
})
->make();

Raw Column

return MiniDataTables::of(
    User::query()
)
->rawColumns(['action'])
->make();

Full Example

use App\Models\User;
use Crushjs\MiniDataTables\MiniDataTables;

Route::get('/users', function () {

    return MiniDataTables::of(
        User::query()
    )
    ->search('name')
    ->sort()
    ->paginate(10)
    ->addColumn('action', function ($user) {
        return '<button>Edit</button>';
    })
    ->rawColumns(['action'])
    ->make();

});

Package Structure

mini-datatables/
 ├── composer.json
 ├── README.md
 └── src/
      ├── MiniDataTables.php
      ├── MiniDataTablesServiceProvider.php
      └── Facades/
           └── MiniTable.php

Local Development

Clone repository:

git clone https://github.com/crushjs/mini-datatables.git

Install dependencies:

composer install

Testing Inside Laravel

Add local repository to Laravel project:

"repositories": [
    {
        "type": "path",
        "url": "./packages/crushjs/mini-datatables"
    }
]

Then install:

composer require crushjs/mini-datatables:@dev

Requirements

  • PHP 8.1+
  • Laravel 10+
  • Laravel 11+
  • Laravel 12+

Roadmap

  • Global search
  • Multi-column sorting
  • Export CSV
  • Export Excel
  • API Resources
  • Vue support
  • React support

License

MIT License

Author

Crushjs

GitHub: https://github.com/crushjs

Screenshots

Table UI

Table UI

Controller Example

Controller

Blade Usage

Blade

Route Example

Route