PHP code example of cav-s-a / inertiajs-tables-laravel-query-builder
1. Go to this page and download the library: Download cav-s-a/inertiajs-tables-laravel-query-builder 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/ */
cav-s-a / inertiajs-tables-laravel-query-builder example snippets
Inertia::render('Page/Index')->table(function ($table) {
$table->addSearch('name', 'Name');
$table->addSearchRows([
'email' => 'Email',
'job_title' => 'Job Title',
]);
});
Inertia::render('Page/Index')->table(function ($table) {
$table->addFilter('language_code', 'Language', [
'en' => 'Engels',
'nl' => 'Nederlands',
]);
});
Inertia::render('Page/Index')->table(function ($table) {
$table->addColumn('name', 'Name');
$table->addColumns([
'email' => 'Email',
'language_code' => 'Language',
]);
});
$table->addColumn('name', 'Name', false);
Inertia::render('Page/Index')->table(function ($table) {
$table->disableGlobalSearch();
});
namespace App\Http\Controllers;
use App\Models\User;
use Inertia\Inertia;
use ProtoneMedia\LaravelQueryBuilderInertiaJs\InertiaTable;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\QueryBuilder;
class UserIndexController
{
public function __invoke()
{
$globalSearch = AllowedFilter::callback('global', function ($query, $value) {
$query->where(function ($query) use ($value) {
$query->where('name', 'LIKE', "%{$value}%")->orWhere('email', 'LIKE', "%{$value}%");
});
});
$users = QueryBuilder::for(User::class)
->defaultSort('name')
->allowedSorts(['name', 'email', 'language_code'])
->allowedFilters(['name', 'email', 'language_code', $globalSearch])
->paginate()
->withQueryString();
return Inertia::render('Users/Index', [
'users' => $users,
])->table(function (InertiaTable $table) {
$table->addSearchRows([
'name' => 'Name',
'email' => 'Email address',
])->addFilter('language_code', 'Language', [
'en' => 'Engels',
'nl' => 'Nederlands',
])->addColumns([
'email' => 'Email address',
'language_code' => 'Language',
]);
});
}
}