Laravel Yajra Datatables Example
Apr 14, 2021 . Admin
Hello Friends,
Now let's see example of how to use laravel DataTable example. This is a short guide on laravel DataTable. Here you will learn how to use laravel DataTable. We will use how to use DataTable in laravel. Let's get started with how to DataTable in laravel.
Here i will give you few step for implement datatables in your laravel application
Step 1: Install Laravel 8In this step, if you haven't laravel 8 application setup then we have to install fresh laravel 8 application.
composer create-project --prefer-dist laravel/laravel blogStep 2: Install Datatable
We need to install yajra datatable composer package for datatable, so you can install using following command:
composer require yajra/laravel-datatables-oracle
After that you need to set providers and alias.config/app.php
..... 'providers' => [ .... Yajra\DataTables\DataTablesServiceProvider::class, ] .....Step 3: Add Dummy Records
In this step, we will create some dummy users using tinker factory. so let's create dummy records using bellow command:
php artisan tinker User::factory()->count(20)->create()Step 4: Add Route
In this is step we need to create route for datatables layout file and another one for getting data. so open your routes/web.php file and add following route.
routes/web.php
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\StudentController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('students', [StudentController::class, 'index'])->name('students.index'); ?>Step 5: Create Controller
In this point, now we should create new controller as StudentController. this controller will manage layout and getting data request and return response, so put bellow content in controller file:
app/Http/Controllers/StudentController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; use DataTables; class StudentController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request) { if ($request->ajax()) { $data = Student::select('*'); return Datatables::of($data) ->addIndexColumn() ->addColumn('action', function($row){ $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>'; return $btn; }) ->rawColumns(['action']) ->make(true); } return view('students'); } } ?>Step 6: Create View
In Last step, let's create students.blade.php(resources/views/students.blade.php) for layout and we will write design code here and put following code:
resources/views/students.blade.php
<!DOCTYPE html> <html> <head> <title>Laravel - How to create datatable?-MyWebtuts.com</title> <meta name="csrf-token" content="{{ csrf_token() }}"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" /> <link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet"> <link href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script> <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script> </head> <body> <div class="container"> <h1>Laravel Datatables Example</h1> <table class="table table-bordered data-table"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th width="100px">Action</th> </tr> </thead> <tbody> </tbody> </table> </div> </body> <script type="text/javascript"> $(function () { var table = $('.data-table').DataTable({ processing: true, serverSide: true, ajax: "{{ route('students.index') }}", columns: [ {data: 'id', name: 'id'}, {data: 'name', name: 'name'}, {data: 'email', name: 'email'}, {data: 'action', name: 'action', orderable: false, searchable: false}, ] }); }); </script> </html>
Now let's run our example threw the below command run:
Step 6: Create Viewphp artisan serve
It will help you....