Skip to content

Lucid Datatable

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

Query data

Data must respone as ModelQueryBuilderContract (run without await), then datatable class will execute query with condition request params from datatable.

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

Via Service

ts
import datatables from '@adityadarma/adonis-datatables/services/main'
import LucidDataTable from '@adityadarma/adonis-datatables/engines/lucid_datatable'

return await datatables.of<LucidDataTable>(transactions)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('user_name', (row: Transaction) => {
        return row.user.name
    })
    .rawColumns(['intro'])
    .results()

Via Factory

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

return await Datatables.lucid(transactions)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('user_name', (row: Transaction) => {
        return row.user.name
    })
    .rawColumns(['intro'])
    .results()

Via Engine

ts
import LucidDataTable from '@adityadarma/adonis-datatables/engines/lucid_datatable'

return await new LucidDataTable(transactions)
    .setContext(ctx) // optional
    .addIndexColumn()
    .addColumn('user_name', (row: Transaction) => {
        return row.user.name
    })
    .rawColumns(['intro'])
    .results()