Builder DataTable
Introduction
The Builder DataTable
is more flexible than the previous Query DataTable
. You can use all the builders that codeigniter4 has provided. Read the docs here
Initialization
Helper Method
Recommended for shortest syntax
$query = db_connect()->table('table');
return datatables($query)->make();
Class Name Method
use Irsyadulibad\DataTables\DataTables;
$query = db_connect()->table('table');
return DataTables::use($query)->make();
Usage
You can use the query builder as usual, then pass it on the datatables
$table = db_connect()->table('users');
$query = $table->select('users.*, addresses.name as address')
->where('users.role', 'admin')
->join('addresses', 'users.id = addresses.user_id');
return datatables($query)->make();
Set Output
The default parameter is false, which is automatically return the JSON data. You can return the data's dump by passing the true param
DataTables::use('table')
->make(true);
Column Editing
The Builder DataTable
can also make edits to the columns before they are output to JSON
Add Column
Add custom column which is not in the table
// <name>, <callback>
->addColumn('action', function($data) {
return '<a href="/edit/'.$data->id.'">edit</a>';
})
Edit Column
// <name>, <callback>
->editColumn('created_at', function($value) {
return format($value);
})
// or with data as second parameter
->editColumn('color', function($value, $data) {
return "$value {$data->type}";
})
Raw Columns
By default, all of the data is escaped to prevent XSS. But if you want to unescape them, you can use this method
->rawColumns(['bio'])
Hide Columns
Hide columns from JSON output
->hideColumns(['password'])
Index Column
In some cases, you need to track the index of the records on your response. This method will add another column on your response with default name is DT_RowIndex
.
->addIndexColumn()
// with custom column name
->addIndexColumn('CustomRowIndex')