Eloquent DataTable with Object Response
Id |
Name |
Email |
Created At |
Updated At |
Action |
HTML
<table id="users-table" class="table table-bordered">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
<th>Created At</th>
<th>Updated At</th>
<th>Action</th>
</tr>
</thead>
</table>
Routes
<?php
Route::get('eloquent/object', 'Eloquent\ObjectResponseController@index');
Route::get('eloquent/object-data', 'Eloquent\ObjectResponseController@data');
Controller
<?php
namespace App\Http\Controllers\Eloquent;
use App\Http\Controllers\Controller;
use App\User;
use Yajra\Datatables\Datatables;
class ObjectResponseController extends Controller
{
/**
* Display index page.
*
* @return \BladeView|bool|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
return view('eloquent.object');
}
/**
* Process dataTable ajax response.
*
* @param \Yajra\Datatables\Datatables $datatables
* @return \Illuminate\Http\JsonResponse
*/
public function data(Datatables $datatables)
{
return $datatables->eloquent(User::query())
->editColumn('name', function ($user) {
return '<a>' . $user->name . '</a>';
})
->addColumn('action', 'eloquent.tables.users-action')
->rawColumns(['name', 'action'])
->make(true);
}
}