Laravel 6 Ajax CRUD Example

Laravel 6 Ajax CRUD Example

Today, We want to share with you Laravel 6 Ajax CRUD.In this post we will show you , hear for Laravel 6 – Create First Ajax CRUD Application from Scratch we will give you demo and example for implement.In this post, we will learn about AJAX CRUD Tutorial Using jQuery, JSON and Laravel 6 with an example.

Laravel 6 Ajax CRUD Example

There are the Following The simple About Laravel6 Ajax CRUD Full Information With Example and source code.

As I will cover this Post with live Working example to develop Ajax CRUD [CReate Update Delete] with PHP Laravel6, so the some major files and Directory structures for this example is following below.

Phase 1: Install Laravel 6

install fresh Laravel 6 version application

composer create-project --prefer-dist laravel/laravel socialapp

Phase 2: Install Yajra Datatable

composer require yajra/laravel-datatables-oracle

config/app.php
.....

'providers' => [
	....
	Yajra\DataTables\DataTablesServiceProvider::class,
]

'aliases' => [
	....
	'DataTables' => Yajra\DataTables\Facades\DataTables::class,
]

.....

Phase 3: Database Configuration

crud application of laravel 6

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=socialapp
DB_USERNAME=root
DB_PASSWORD=root

Phase 4: Create Migration Table

Laravel 6 php artisan command,

php artisan make:migration create_suggetions_table --create=suggetions

<?php
 
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
  
class CreateSuggetionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('suggetions', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->text('detail');
            $table->timestamps();
        });
    }
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('suggetions');
    }
}

php artisan migrate

Phase 5: Create Route

routes/web.php

Route::resource('ajaxsuggetions','SuggetionsAjaxController');

Phase 6: Add Controller and Model

app/Http/Controllers/SuggetionsAjaxController.php

<?php
         
namespace App\Http\Controllers;
          
use App\Suggetions;
use Illuminate\Http\Request;
use DataTables;
        
class SuggetionsAjaxController extends Controller
{

    public function index(Request $request)
    {
   
        if ($request->ajax()) {
            $data = Suggetions::latest()->get();
            return Datatables::of($data)
                    ->addIndexColumn()
                    ->addColumn('action', function($row){
   
                           $btn = '<a href="javascript:void(0)" data-toggle="tooltip"  data-id="'.$row->id.'" data-original-title="Edit" class="edit btn btn-primary btn-sm editSuggetions">Edit</a>';
   
                           $btn = $btn.' <a href="javascript:void(0)" data-toggle="tooltip"  data-id="'.$row->id.'" data-original-title="Delete" class="btn btn-danger btn-sm deleteSuggetions">Delete</a>';
    
                            return $btn;
                    })
                    ->rawColumns(['action'])
                    ->make(true);
        }
      
        return view('suggetionAjax',compact('suggetions'));
    }
     
    public function store(Request $request)
    {
        Suggetions::updateOrCreate(['id' => $request->suggetion_id],
                ['name' => $request->name, 'detail' => $request->detail]);        
   
        return response()->json(['success'=>'Suggetions saved successfully.']);
    }

    public function edit($id)
    {
        $suggetion = Suggetions::find($id);
        return response()->json($suggetion);
    }
  
    public function destroy($id)
    {
        Suggetions::find($id)->delete();
     
        return response()->json(['success'=>'Suggetions deleted successfully.']);
    }
}

app/Suggetions.php

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Suggetions extends Model
{
    protected $fillable = [
       'name', 'detail'
    ];
}

Phase 7: Add Blade Files

resources/views/suggetionAjax.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel6 Ajax CRUD tutorial using Datatable - pakainfo.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>Simple Laravel 6 Ajax CRUD tutorial using Datatable - pakainfo.com</h1>
    <a class="btn btn-success" href="javascript:void(0)" id="createNewSuggetions"> Create New Suggetions</a>
    <table class="table table-bordered data-table">
        <thead>
            <tr>
                <th>No</th>
                <th>Name</th>
                <th>Details</th>
                <th width="280px">Action</th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>
   
<div class="modal fade" id="ajaxModel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="modelHeading"></h4>
            </div>
            <div class="modal-body">
                <form id="suggetionForm" name="suggetionForm" class="form-horizontal">
                   <input type="hidden" name="suggetion_id" id="suggetion_id">
                    <div class="form-group">
                        <label for="name" class="col-sm-2 control-label">Name</label>
                        <div class="col-sm-12">
                            <input type="text" class="form-control" id="name" name="name" placeholder="Enter Name" value="" maxlength="50" required="">
                        </div>
                    </div>
     
                    <div class="form-group">
                        <label class="col-sm-2 control-label">Details</label>
                        <div class="col-sm-12">
                            <textarea id="detail" name="detail" required="" placeholder="Enter Details" class="form-control"></textarea>
                        </div>
                    </div>
      
                    <div class="col-sm-offset-2 col-sm-10">
                     <button type="submit" class="btn btn-primary" id="saveBtn" value="create">Save changes
                     </button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>
    
</body>
    
<script type="text/javascript">
  $(function () {
     
      $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
    });
    
    var table = $('.data-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: "{{ route('ajaxsuggetions.index') }}",
        columns: [
            {data: 'DT_RowIndex', name: 'DT_RowIndex'},
            {data: 'name', name: 'name'},
            {data: 'detail', name: 'detail'},
            {data: 'action', name: 'action', orderable: false, searchable: false},
        ]
    });
     
    $('#createNewSuggetions').click(function () {
        $('#saveBtn').val("create-suggetion");
        $('#suggetion_id').val('');
        $('#suggetionForm').trigger("reset");
        $('#modelHeading').html("Create New Suggetions");
        $('#ajaxModel').modal('show');
    });
    
    $('body').on('click', '.editSuggetions', function () {
      var suggetion_id = $(this).data('id');
      $.get("{{ route('ajaxsuggetions.index') }}" +'/' + suggetion_id +'/edit', function (data) {
          $('#modelHeading').html("Edit Suggetions");
          $('#saveBtn').val("edit-user");
          $('#ajaxModel').modal('show');
          $('#suggetion_id').val(data.id);
          $('#name').val(data.name);
          $('#detail').val(data.detail);
      })
   });
    
    $('#saveBtn').click(function (e) {
        e.preventDefault();
        $(this).html('Sending..');
    
        $.ajax({
          data: $('#suggetionForm').serialize(),
          url: "{{ route('ajaxsuggetions.store') }}",
          type: "POST",
          dataType: 'json',
          success: function (data) {
     
              $('#suggetionForm').trigger("reset");
              $('#ajaxModel').modal('hide');
              table.draw();
         
          },
          error: function (data) {
              console.log('Error:', data);
              $('#saveBtn').html('Save Changes');
          }
      });
    });
    
    $('body').on('click', '.deleteSuggetions', function () {
     
        var suggetion_id = $(this).data("id");
        confirm("Are You sure want to delete !");
      
        $.ajax({
            type: "DELETE",
            url: "{{ route('ajaxsuggetions.store') }}"+'/'+suggetion_id,
            success: function (data) {
                table.draw();
            },
            error: function (data) {
                console.log('Error:', data);
            }
        });
    });
     
  });
</script>
</html>

Download Laravel 6 Crud Source Code

Now We can test it by using simple following command:

  Top 10 Advanced CSS Interview Questions Answers

php artisan serve

Now We can open bellow URL on your browser:

http://localhost:8000/ajaxsuggetions

Web Programming Tutorials Example with Demo

Read :

Summary

You can also read about AngularJS, ASP.NET, VueJs, PHP.

I hope you get an idea about Laravel 6 Ajax CRUD Example Step By Step.
I would like to have feedback on my infinityknow.com blog.
Your valuable feedback, question, or comments about this article are always welcome.
If you enjoyed and liked this post, don’t forget to share.

Leave a Reply

avatar
  Subscribe  
Notify of