Laravel 7 google firebase crud app example tutorial. In this tutorial, you will learn how to perform real-time crud operation using google firebase in laravel apps.
Also in this laravel google firebase crud app example tutorial, you will learn how to create an account in google firebase and create and setup google firebase app. And then take the necessary details from where to our laravel firebase crud project.
This laravel firebase crud tutorial will guide you step by step on how to perform real-time crud (create, read, update, delete) operation using google firebase in laravel apps.
Laravel 7 RealTime CRUD Using Google Firebase
Follow the below steps and create real-time CRUD app using google firebase in laravel app:
- Step 1: Create Firebase Project
- Step 2: Intsall Laravel Application
- Step 3: Add Route
- Step 4: Add Firebase Settings in Service.php
- Step 5: Create Controller Using Artisan
- Step 6: Create View Files
- Step 7: Run Development Server
Step 1: Create Firebase Project
First of all, you need to create google firebase project. So follow the following steps to create google firebase project.
Now, click the following url https://firebase.google.com/ and create a google firebase project, as follows:
Fill your google firebase project name and click the “continue button. After that, the below following screen will look like:
Next, here also click “Continue” button. And then the below given screen looks like:
Here, Click “Create Project” Button. And your google firebase project will successfully be created.
Then, You will see blogs on top menu, click it. And create web app with a blogs name or you want to keep name accordingly.
See the above picture and click your web app name.
And The page has been opened. Scroll it down. Then copy google firebase configuration and database details.
Step 2: Install Laravel App
In this step, open your terminal and run the following command to install laravel fresh app for building laravel firebase crud app:
composer create-project --prefer-dist laravel/laravel blog
Step 3: Add Route
In this step, add the following route into your web.php file. To navigate the routes folder and open web.php file. Then update the following route into web.php file:
Route::get('user','UserController@index');
Step 4: Add Firebase Settings in Service.php
In this step, Navigate to the config folder and open services.php file. Then add the following google firebase configuration details into services.php file:
'firebase' => [ 'api_key' => 'api_key', 'auth_domain' => 'auth_domain', 'database_url' => 'database_url', 'project_id' => 'project_id', 'storage_bucket' => 'storage_bucket', 'messaging_sender_id' => 'messaging_sender_id', 'app_id' => 'app_id', 'measurement_id' => 'measurement_id', ],
Step 5: Create Controller By Artisan
In this step, open your terminal and run the following command to create UserController.php file.
Then app/http/controller folder and open UserController.php file. And update the following code into your UserController.php file:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function index() { return view('users'); } }
Step 6: Create Blade View File
In this step, Navigate to resources/view folder and create one blade view file named users.blade.php. Then update the following code into your users.blade.php file:
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Laravel RealTime Google Firebase CRUD Example - Tutsmake.com</title> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> </head> <body> <div class="container" style="margin-top: 50px;"> <h4 class="text-center">Laravel 7 RealTime Google Firebase CRUD Example - Tutsmake.com</h4><br> <h5># Add User</h5> <div class="card card-default"> <div class="card-body"> <form id="addUser" class="form-inline" method="POST" action=""> <div class="form-group mb-2"> <label for="name" class="sr-only">Name</label> <input id="name" type="text" class="form-control" name="name" placeholder="Name" required autofocus> </div> <div class="form-group mx-sm-3 mb-2"> <label for="email" class="sr-only">Email</label> <input id="email" type="email" class="form-control" name="email" placeholder="Email" required autofocus> </div> <button id="submitUser" type="button" class="btn btn-primary mb-2">Submit</button> </form> </div> </div> <br> <h5># Users</h5> <table class="table table-bordered"> <tr> <th>Name</th> <th>Email</th> <th width="180" class="text-center">Action</th> </tr> <tbody id="tbody"> </tbody> </table> </div> <!-- Update Model --> <form action="" method="POST" class="users-update-record-model form-horizontal"> <div id="update-modal" data-backdrop="static" data-keyboard="false" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="custom-width-modalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" style="width:55%;"> <div class="modal-content" style="overflow: hidden;"> <div class="modal-header"> <h4 class="modal-title" id="custom-width-modalLabel">Update</h4> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">× </button> </div> <div class="modal-body" id="updateBody"> </div> <div class="modal-footer"> <button type="button" class="btn btn-light" data-dismiss="modal">Close </button> <button type="button" class="btn btn-success updateUser">Update </button> </div> </div> </div> </div> </form> <!-- Delete Model --> <form action="" method="POST" class="users-remove-record-model"> <div id="remove-modal" data-backdrop="static" data-keyboard="false" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="custom-width-modalLabel" aria-hidden="true" style="display: none;"> <div class="modal-dialog modal-dialog-centered" style="width:55%;"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="custom-width-modalLabel">Delete</h4> <button type="button" class="close remove-data-from-delete-form" data-dismiss="modal" aria-hidden="true">× </button> </div> <div class="modal-body"> <p>Do you want to delete this record?</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default waves-effect remove-data-from-delete-form" data-dismiss="modal">Close </button> <button type="button" class="btn btn-danger waves-effect waves-light deleteRecord">Delete </button> </div> </div> </div> </div> </form> {{--Firebase Tasks--}} <!-- The core Firebase JS SDK is always required and must be listed first --> <script src="https://www.gstatic.com/firebasejs/7.14.6/firebase-app.js"></script> <!-- TODO: Add SDKs for Firebase products that you want to use https://firebase.google.com/docs/web/setup#available-libraries --> <script src="https://www.gstatic.com/firebasejs/7.14.6/firebase-analytics.js"></script> <script src="https://www.gstatic.com/firebasejs/7.14.6/firebase-database.js"></script> <script> // Initialize Firebase var config = { apiKey: "{{ config('services.firebase.api_key') }}", authDomain: "{{ config('services.firebase.auth_domain') }}", databaseURL: "{{ config('services.firebase.database_url') }}", projectId: "{{ config('services.firebase.project_id') }}", storageBucket: "{{ config('services.firebase.storage_bucket') }}", messagingSenderId: "{{ config('services.firebase.messaging_sender_id') }}", appId: "{{ config('services.firebase.app_id') }}", measurementId: "{{ config('services.firebase.measurement_id') }}" }; firebase.initializeApp(config); firebase.analytics(); var database = firebase.database(); var lastIndex = 0; // Get Data firebase.database().ref('Users/').on('value', function (snapshot) { var value = snapshot.val(); var htmls = []; $.each(value, function (index, value) { if (value) { htmls.push('<tr>\ <td>' + value.name + '</td>\ <td>' + value.email + '</td>\ <td><button data-toggle="modal" data-target="#update-modal" class="btn btn-info updateData" data-id="' + index + '">Update</button>\ <button data-toggle="modal" data-target="#remove-modal" class="btn btn-danger removeData" data-id="' + index + '">Delete</button></td>\ </tr>'); } lastIndex = index; }); $('#tbody').html(htmls); $("#submitUser").removeClass('desabled'); }); // Add Data $('#submitUser').on('click', function () { var values = $("#addUser").serializeArray(); var name = values[0].value; var email = values[1].value; var userID = lastIndex + 1; console.log(values); firebase.database().ref('Users/' + userID).set({ name: name, email: email, }); // Reassign lastID value lastIndex = userID; $("#addUser input").val(""); }); // Update Data var updateID = 0; $('body').on('click', '.updateData', function () { updateID = $(this).attr('data-id'); firebase.database().ref('Users/' + updateID).on('value', function (snapshot) { var values = snapshot.val(); var updateData = '<div class="form-group">\ <label for="first_name" class="col-md-12 col-form-label">Name</label>\ <div class="col-md-12">\ <input id="first_name" type="text" class="form-control" name="name" value="' + values.name + '" required autofocus>\ </div>\ </div>\ <div class="form-group">\ <label for="last_name" class="col-md-12 col-form-label">Email</label>\ <div class="col-md-12">\ <input id="last_name" type="text" class="form-control" name="email" value="' + values.email + '" required autofocus>\ </div>\ </div>'; $('#updateBody').html(updateData); }); }); $('.updateUser').on('click', function () { var values = $(".users-update-record-model").serializeArray(); var postData = { name: values[0].value, email: values[1].value, }; var updates = {}; updates['/Users/' + updateID] = postData; firebase.database().ref().update(updates); $("#update-modal").modal('hide'); }); // Remove Data $("body").on('click', '.removeData', function () { var id = $(this).attr('data-id'); $('body').find('.users-remove-record-model').append('<input name="id" type="hidden" value="' + id + '">'); }); $('.deleteRecord').on('click', function () { var values = $(".users-remove-record-model").serializeArray(); var id = values[0].value; firebase.database().ref('Users/' + id).remove(); $('body').find('.users-remove-record-model').find("input").remove(); $("#remove-modal").modal('hide'); }); $('.remove-data-from-delete-form').click(function () { $('body').find('.users-remove-record-model').find("input").remove(); }); </script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> </body> </html>
Step 7: Run Development Server
Now, Run the following command to start development server:
php artisan serve
Then hit the below url on your browers
http://localhost:8000/users
Conclusion
Laravel google firebase crud example tutorial. You have learned how to create real-time crud application in laravel using google firebase.