A powerful and extensible DataTable scaffolding package for Laravel.
Generate server-side DataTables, Blade views, controllers, requests, policies, API resources, and complete admin stacks using Artisan commands.
Built for scalable Laravel applications.
- Generate server-side DataTables
- Generate Blade DataTable views
- Generate full DataTable stacks
- Searchable columns
- Server-side pagination
- Ordering support
- Stub publishing support
- Extensible architecture
- Laravel package auto-discovery
- Laravel 11 & 12 support
- PHP 8.2+ support
Install the package via Composer:
composer require caydeesoft/datatable-generatorThe package supports Laravel auto-discovery.
No manual provider registration required.
Publish all package stubs:
php artisan vendor:publish --tag=datatable-stubsPublished stubs:
stubs/
├── datatable.stub
└── datatable-view.stub
You can fully customize generated files by editing these stubs.
php artisan make:datatable UserDataTable Userphp artisan make:datatable UserDataTable User \
--search=name \
--search=email \
--search=phonephp artisan make:datatable-view backend/users/index \
--route=backend.user.datatable \
--table=user-table \
--columns=id \
--columns=name \
--columns=email \
--columns=status \
--columns=actionphp artisan make:datatable-stack User \
--columns=id \
--columns=name \
--columns=email \
--columns=status \
--columns=action \
--search=name \
--search=email \
--controller \
--request \
--policy \
--apiapp/Http/Datatables/UserDataTable.php
resources/views/backend/users/index.blade.php
app/
├── Http/
│ ├── Controllers/
│ │ └── UserController.php
│ │
│ ├── Datatables/
│ │ └── UserDataTable.php
│ │
│ ├── Requests/
│ │ └── UserRequest.php
│ │
│ └── Resources/
│ └── UserResource.php
│
├── Policies/
│ └── UserPolicy.php
resources/
└── views/
└── backend/
└── users/
└── index.blade.php
<?php
namespace App\Http\Datatables;
use App\Models\User;
class UserDataTable
{
public array $columns = [
'id',
'name',
'email',
];
public function data($request): array
{
$query = User::query();
if ($search = $request->input('search.value'))
{
$query->where('name', 'LIKE', "%{$search}%")
->orWhere('email', 'LIKE', "%{$search}%");
}
return [
'data' => $query->get(),
];
}
}@extends('layouts.backend')
@section('content')
<table id="user-table" class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
</table>
@endsection
@section('footer')
<script type="application/javascript">
document.addEventListener('DOMContentLoaded', function ()
{
new window.DataTable('#user-table',
{
processing: true,
serverSide: true,
ajax:
{
url: "{{ route('backend.user.datatable') }}",
type: "POST",
data:
{
_token: "{{ csrf_token() }}"
}
},
columns:
[
{"data": "id"},
{"data": "name"},
{"data": "email"},
{"data": "status"},
{"data": "action"}
]
});
});
</script>
@endsection| Command | Description |
|---|---|
make:datatable |
Generate DataTable class |
make:datatable-view |
Generate Blade DataTable view |
make:datatable-stack |
Generate full DataTable stack |
| Option | Description |
|---|---|
--search=* |
Searchable columns |
| Option | Description |
|---|---|
--columns=* |
Table columns |
--route= |
AJAX route |
--table= |
HTML table ID |
| Option | Description |
|---|---|
--columns=* |
Table columns |
--search=* |
Searchable columns |
--controller |
Generate controller |
--request |
Generate request |
--policy |
Generate policy |
--api |
Generate API resource |
| Version | Supported |
|---|---|
| 11.x | ✅ |
| 12.x | ✅ |
| Version | Supported |
|---|---|
| 8.2 | ✅ |
| 8.3 | ✅ |
| 8.4 | ✅ |
All generated files are powered by stubs.
Publish stubs:
php artisan vendor:publish --tag=datatable-stubsModify:
stubs/datatable.stub
stubs/datatable-view.stub
to customize generated output.
This package works perfectly with:
- DataTables.net
- Bootstrap DataTables
- Server-side Laravel DataTables
Official site:
Run tests:
composer testRun Laravel Pint:
composer formatdatatable-generator/
├── src/
│ ├── Commands/
│ ├── Providers/
│ └── Support/
│
├── stubs/
│ ├── datatable.stub
│ └── datatable-view.stub
│
├── tests/
├── composer.json
├── README.md
└── LICENSE
Planned features include:
- Dynamic schema detection
- Relationship searching
- Export support (CSV/XLSX/PDF)
- Filters
- Column permissions
- Bulk actions
- Query pipelines
- Vue integration
- React integration
- Livewire integration
- API DataTables
- Multi-tenant support
- Admin module scaffolding
- Yajra DataTables integration
Future commands:
php artisan make:admin-module
php artisan make:datatable-filter
php artisan make:datatable-export
php artisan make:datatable-columnContributions are welcome.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
If you discover any security vulnerabilities, please email:
This package is open-sourced software licensed under the MIT license.
- Company: Caydeesoft
- Email: dennis.kiptoo@caydeesoft.com
https://github.com/caydeesoft/datatable-generator
https://packagist.org/packages/caydeesoft/datatable-generator