How to install laravel 9
https://tutorial101.blogspot.com/2022/02/how-to-install-laravel-9.html
Connecting our Database
open .env file root directory.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=root
DB_PASSWORD=
Install Yajra Datatables
Datatables Yajra
https://yajrabox.com/docs/laravel-datatables/master/installation
composer require yajra/laravel-datatables-oracle:"~9.0"
C:\xampp\htdocs\laravel\laravelproject>composer require yajra/laravel-datatables-oracle:"~9.0"
Database Migration
php artisan migrate
C:\xampp\htdocs\laravel\laravelproject>php artisan migrate
Migration table created successfully.
check database table
php artisan migrate
C:\xampp\htdocs\laravel\laravelproject>php artisan migrate
Migration table created successfully.
check database table
Create Dummy Data
php artisan tinker
C:\xampp\htdocs\laravel\laravelproject>php artisan tinker
After opening tinker run the following command for creating dummy records
User::factory()->count(500)->create()
Create Controller
php artisan make:controller UserController
C:\xampp\htdocs\laravel\laravelproject>php artisan make:controller UserController
change it with the following codes:
laravelproject\app\Http\Controllers\UserController.php
//laravelproject\app\Http\Controllers\UserController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use DataTables; class UserController extends Controller { public function index(Request $request) { if ($request->ajax()) { $data = User::select('id','name','email')->get(); return Datatables::of($data)->addIndexColumn() ->addColumn('action', function($data){ $button = '<button type="button" name="edit" id="'.$data->id.'" class="edit btn btn-primary btn-sm"> <i class="bi bi-pencil-square"></i>Edit</button>'; $button .= ' <button type="button" name="edit" id="'.$data->id.'" class="delete btn btn-danger btn-sm"> <i class="bi bi-backspace-reverse-fill"></i> Delete</button>'; return $button; }) ->addColumn('checkbox', '<input type="checkbox" name="users_checkbox[]" class="users_checkbox" value="{{$id}}" />') ->rawColumns(['checkbox','action']) ->make(true); } return view('users'); } public function destroy($id) { $data = User::findOrFail($id); $data->delete(); } function removeall(Request $request) { $user_id_array = $request->input('id'); $user = User::whereIn('id', $user_id_array); if($user->delete()) { echo 'Data Deleted'; } } }Create Views
laravelproject\resources\views\users.blade.php
Bootstrap 5 https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
Jquery
https://jquery.com/download/
CDN : jsDelivr CDN
https://www.jsdelivr.com/package/npm/jquery
https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js
https://icons.getbootstrap.com/#install
https://datatables.net/
//laravelproject\resources\views\users.blade.php <!DOCTYPE html> <html> <head> <title>Laravel 9 Delete Multiple Data using Checkbox with Datatables Yajra Server Side</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" /> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.12.1/css/jquery.dataTables.min.css" /> <script src="https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.3/font/bootstrap-icons.css"> <meta name="csrf-token" content="{{ csrf_token() }}"> </head> <body> <div class="container"> <div class="row"> <div class="col-12 table-responsive"> <br /> <h3 align="center">Laravel 9 Delete Multiple Data using Checkbox with Datatables Yajra Server Side</h3> <br /> <div align="right"> <button type="button" name="create_record" id="create_record" class="btn btn-success"> <i class="bi bi-plus-square"></i> Add</button> </div> <br /> <table class="table table-striped table-bordered user_datatable"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th width="180px">Action</th> <th width="50px"><button type="button" name="bulk_delete" id="bulk_delete" class="btn btn-danger btn-xs">Delete</button></th> </tr> </thead> <tbody></tbody> </table> </div> </div> <div class="modal fade" id="confirmModal" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <form method="post" id="sample_form" class="form-horizontal"> <div class="modal-header"> <h5 class="modal-title" id="ModalLabel">Confirmation</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <h4 align="center" style="margin:0;">Are you sure you want to remove this data?</h4> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" name="ok_button" id="ok_button" class="btn btn-danger">OK</button> </div> </form> </div> </div> </div> </div> </body> <script type="text/javascript"> $(document).ready(function() { var table = $('.user_datatable').DataTable({ processing: true, serverSide: true, ajax: "{{ route('users.index') }}", columns: [ {data: 'id', name: 'id'}, {data: 'name', name: 'name'}, {data: 'email', name: 'email'}, {data: 'action', name: 'action', orderable: false, searchable: false}, {data: 'checkbox', name: 'checkbox', orderable:false, searchable:false}, ] }); var user_id; $(document).on('click', '.delete', function(){ user_id = $(this).attr('id'); $('#confirmModal').modal('show'); }); $('#ok_button').click(function(){ $.ajax({ url:"users/destroy/"+user_id, beforeSend:function(){ $('#ok_button').text('Deleting...'); }, success:function(data) { setTimeout(function(){ $('#confirmModal').modal('hide'); $('#user_table').DataTable().ajax.reload(); alert('Data Deleted'); }, 2000); } }) }); $(document).on('click', '#bulk_delete', function(){ var id = []; if(confirm("Are you sure you want to Delete this data?")) { $('.users_checkbox:checked').each(function(){ id.push($(this).val()); }); if(id.length > 0) { $.ajax({ url:"{{ route('users.removeall')}}", headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}, method:"get", data:{id:id}, success:function(data) { console.log(data); alert(data); window.location.assign("users"); }, error: function(data) { var errors = data.responseJSON; console.log(errors); } }); } else { alert("Please select atleast one checkbox"); } } }); }); </script> </html>Route
laravelproject\routes\web.php
//laravelproject\routes\web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\UserController; Route::get('/', function () { return view('welcome'); }); Route::get('users', [UserController::class, 'index'])->name('users.index'); Route::get('users/destroy/{id}/', [UserController::class, 'destroy']); Route::get('users/removeall', [UserController::class, 'removeall'])->name('users.removeall');Run C:\xampp\htdocs\laravel\laravelproject>php artisan serve
Starting Laravel development server: http://127.0.0.1:8000