Skip to content

Object Datatable ​

You can look at src/engines/object_datatabe class which handles the conversion of your Model into a readable DataTable API response.

Query data ​

Source Data respone as Objet (after await), then datatable class will filter data with condition request params from datatable.

ts
const transactions = await Transaction.query().preload('user')

Via Service ​

ts
import datatables from '@adityadarma/adonis-datatables/services/main'
import ObjectDataTable from '@adityadarma/adonis-datatables/engines/object_datatable'

return await datatables.of<ObjectDataTable>(users)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('count_transactions', 0)
    .addColumn('intro', (row: Transaction) => {
        return ctx.view.renderSync('text', {code: row.code})
    })
    .rawColumns(['intro'])
    .results()

Via Factory ​

ts
import { Datatables } from '@adityadarma/adonis-datatables'

return await Datatables.object(transactions)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('count_transactions', 0)
    .addColumn('intro', (row: Transaction) => {
        return ctx.view.renderSync('text', {code: row.code})
    })
    .rawColumns(['intro'])
    .results()

Via Engine ​

ts
import ObjectDataTable from '@adityadarma/adonis-datatables/engines/object_datatable'

return await new ObjectDataTable(transactions)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('count_transactions', 0)
    .addColumn('intro', (row: Transaction) => {
        return ctx.view.renderSync('text', {code: row.code})
    })
    .rawColumns(['intro'])
    .results()