romalytvynenko/eloquent-table

There is no license information available for the latest version (dev-master) of this package.

dev-master 2020-10-26 08:30 UTC

This package is not auto-updated.

Last update: 2024-12-11 07:16:56 UTC


README

Add folowing line to your composer.json:

"romalytvynenko/eloquent-table": "dev-master"

Add following lines to config/app.php (providers)

'Romalytvynenko\EloquentTable\EloquentTableServiceProvider'

And this part to aliases section

'EloquentTable' => 'Romalytvynenko\EloquentTable\Engine\EloquentTable'

Usage

First of all, cerate EloquentTable object.

$exampleTable = new EloquentTable('Example', $tableSettings);

Where first parameter is model name, and $tableSettings is special table settings used for current table. You could also provide some specific params, such as 'searchable' and 'preGet'. Where 'searchable' is array of columns which will be searchable (what a twist!), and 'preGet' is closure that will applied to query before all other filters (search, sort, etc.)

$tableSettings = [
    'columns' => [
        'id' => '#',
        'title' => 'Title',
        'message' => 'Message',
        'sent_at' => 'Sent',
    ],
    'sortable' => [
        'id',
        'sent_at'
    ],
    'searchable' => [
        'title'
    ],
    'preGet' => function($query) {
        /**
        * @var $query \Illuminate\Database\Query\Builder
        */
        return $query->where('type', 'group');
    },
];

And now you could render table using show method:

$exampleTable->show();

Changing column output

For changing columns output you can use closures for hooking output:

$table->columnOutput('id', function($item){
    /**
     * @var $item \Eloquent
     */
    return 'Item - ' . $item->id;
});

Where id is example of column name, and anonymous function - is the example of a function wich result will be used instead of original column value.

Your own table layout

You can easyli create your own table layout. For those purpose look at views/table.php sources, and feel free to create iyour own. You can use it passing to the show function your view name:

$exampleTable->show('admin.table');