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 8

In 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 blog
Step 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 View
	php artisan serve

It will help you....

#Laravel 8 #Laravel